首页 > web前端 > js教程 > 使用Jquery+Ajax+Json如何实现分页显示附JAVA+JQuery实现异步分页

使用Jquery+Ajax+Json如何实现分页显示附JAVA+JQuery实现异步分页

高洛峰
发布: 2017-01-12 09:19:43
原创
2856 人浏览过

先给大家展示下运行效果图:

使用Jquery+Ajax+Json如何实现分页显示附JAVA+JQuery实现异步分页

 1.后台action产生json数据。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

List blackList = blackService.getBlackInfoList(mobileNum, gatewayid, startDate, endDate);

int totalRows = blackList.size();

StringBuffer sb = new StringBuffer();

     sb.append("{\"totalCount\":\""+totalRows+"\",");

     sb.append("\"jsonRoot\":[");

     for (int i=0;i<blackList.size();i++) {

       LBlack blackInfo = (LBlack)blackList.get(i);

       sb.append("{\"id\":\""+ blackInfo.getId());

       sb.append("\","); 

       sb.append("\"mobile\":\""+ blackInfo.getMobile());

       sb.append("\","); 

       sb.append("\"province\":\""+ blackInfo.getProvince());

       sb.append("\","); 

       sb.append("\"gateway\":\""+ blackInfo.getGateway());

       sb.append("\",");

       sb.append("\"insertTime\":\""+ blackInfo.getInsertTime());

       sb.append("\",");

       sb.append("\"remark\":\""+ blackInfo.getRemark());

       sb.append("\"");

       sb.append("},");

     }

     sb.deleteCharAt(sb.lastIndexOf(",")); // 删去最后一个逗号

     sb.append("]}"); 

     HttpServletResponse response = ServletActionContext.getResponse();     

     response.setContentType("text/plain");

     response.getWriter().print(sb);

登录后复制

2.struts.xml相关配置

1

2

3

4

5

6

7

<action name="blackList" class="blackAction" method="blackList">

  <!--plaintext用于显示页面原始代码的结果类型-->

  <result type="plainText">

  <param name="charSet">UTF-8</param>

  <param name="location">/WEB-INF/jsp/manage/black.jsp</param>

  </result>

</action>

登录后复制

3.js获取json数据分页显示

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

function getJSONData(pn) {

  // alert(pn);

  $.getJSON("blackList.ce", function(data) {

    var totalCount = data.totalCount; // 总记录数

    var pageSize = 10; // 每页显示几条记录

    var pageTotal = Math.ceil(totalCount / pageSize); // 总页数

    var startPage = pageSize * (pn - 1);

    var endPage = startPage + pageSize - 1;

    var $ul = $("#json-list");

    $ul.empty();

    for (var i = 0; i < pageSize; i++) {

      $ul.append(&#39;<li class="li-tag"></li>&#39;);

    }

    var dataRoot = data.jsonRoot;

    if (pageTotal == 1) {   // 当只有一页时

      for (var j = 0; j < totalCount; j++) {

        $(".li-tag").eq(j).append("<span class=&#39;col1&#39;><input type=&#39;checkbox&#39; value=&#39;"+parseInt(j + 1)+"&#39;/></span>")

        .append("<span class=&#39;col2&#39;>" + parseInt(j + 1)

            + "</span>").append("<span class=&#39;col3&#39;>" + dataRoot[j].mobile

            + "</span>").append("<span class=&#39;col4&#39;>" + dataRoot[j].province

            + "</span>").append("<span class=&#39;col5&#39;>" + dataRoot[j].gateway

            + "</span>").append("<span class=&#39;col6&#39;>" + dataRoot[j].insertTime

            + "</span>").append("<span class=&#39;col7&#39;>" + dataRoot[j].remark

            + "</span>")

      }

    } else {

      for (var j = startPage, k = 0; j < endPage, k < pageSize; j++, k++) {

        if( j == totalCount){

          break;    // 当遍历到最后一条记录时,跳出循环

        }

        $(".li-tag").eq(k).append("<span class=&#39;col1&#39;><input type=&#39;checkbox&#39; value=&#39;"+parseInt(j + 1)+"&#39;/></span>")

        .append("<span class=&#39;col2&#39;>" + parseInt(j + 1)

            + "</span>").append("<span class=&#39;col3&#39;>" + dataRoot[j].mobile

            + "</span>").append("<span class=&#39;col4&#39;>" + dataRoot[j].province

            + "</span>").append("<span class=&#39;col5&#39;>" + dataRoot[j].gateway

            + "</span>").append("<span class=&#39;col6&#39;>" + dataRoot[j].insertTime

            + "</span>").append("<span class=&#39;col7&#39;>" + dataRoot[j].remark

            + "</span>")

      }

    }

    $(".page-count").text(pageTotal);

  })

}

function getPage() {

  $.getJSON("blackList.ce", function(data) {

        pn = 1;

        var totalCount = data.totalCount; // 总记录数

        var pageSize = 10; // 每页显示几条记录

        var pageTotal = Math.ceil(totalCount / pageSize); // 总页数

        $("#next").click(function() {

              if (pn == pageTotal) {

                alert("后面没有了");

                pn = pageTotal;

              } else {

                pn++;

                gotoPage(pn);

              }

            });

        $("#prev").click(function() {

              if (pn == 1) {

                alert("前面没有了");

                pn = 1;

              } else {

                pn--;

                gotoPage(pn);

              }

            })

        $("#firstPage").click(function() {

              pn = 1;

              gotoPage(pn);

            });

        $("#lastPage").click(function() {

              pn = pageTotal;

              gotoPage(pn);

            });

        $("#page-jump").click(function(){

          if($(".page-num").val() <= pageTotal && $(".page-num").val() != &#39;&#39;){

            pn = $(".page-num").val();

            gotoPage(pn);

          }else{

            alert("您输入的页码有误!");

            $(".page-num").val(&#39;&#39;).focus();

          }

        })

        $("#firstPage").trigger("click");

      })

}

function gotoPage(pn) {

  // alert(pn);

  $(".current-page").text(pn);

  getJSONData(pn)

}

$(function() {

  getPage();

})

登录后复制

ps:JAVA+JQuery实现异步分页

最近一个项目要求实现异步分页,简单的写了一下,不好的请指出~

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

/**

*分页类

*/

public class PageBean {

  publicint rowCount = 0; // 总记录数

  publicint currentPage = 1;// 当前页数

  publicint sizePerPage = 20;// 每页显示条数

  publicint pageCount = 0;// 总页数

  publicString pageURL;// 请求URL

  publicString pageDisplay;// JSP页面显示

  publicString pageStyle = "numberStyle";// 分页样式

  publicint pagePreOffset = 10;// 向前偏移量

  publicint pageNextOffset = 9;// 向后偏移量

  publicString pageCss;// 预留

  publicString getPageCss() {

    returnpageCss;

  }

  publicvoid setPageCss(String pageCss) {

    this.pageCss = pageCss;

  }

  publicString getPageStyle() {

    returnpageStyle;

  }

  publicvoid setPageStyle(String pageStyle) {

    this.pageStyle = pageStyle;

  }

  publicint getPagePreOffset() {

    returnpagePreOffset;

  }

  publicvoid setPagePreOffset(intpagePreOffset) {

    this.pagePreOffset = pagePreOffset;

  }

  publicint getPageNextOffset() {

    returnpageNextOffset;

  }

  publicvoid setPageNextOffset(intpageNextOffset) {

    this.pageNextOffset = pageNextOffset;

  }

  publicString getPageDisplay() {

    String nextClick=" onclick=&#39;ajaxpage(""+this.pageURL+ "?currentPage=" + (this.currentPage + 1)+"");return false;&#39; ";

    String preClick=" onclick=&#39;ajaxpage(""+this.pageURL+ "?currentPage=" + (this.currentPage - 1)+"");return false;&#39; ";

    String firstClick=" onclick=&#39;ajaxpage(""+this.pageURL+ "?currentPage=1");return false;&#39; ";

    String lastClick=" onclick=&#39;ajaxpage(""+this.pageURL+ "?currentPage=" + (this.getPageCount())+"");return false;&#39; ";

    String onChange=" onchange=&#39;ajaxpage(""+this.pageURL+ "?currentPage=" + (1)+"");return false;&#39; ";

    StringBuffer pageString =new StringBuffer();

    pageString.append("<div class=&#39;"+ this.pageStyle +"&#39;><span >");

    // 数字样式

    if("numberStyle".equalsIgnoreCase(this.pageStyle)) {

      // 如果只有一页,不需要分页

      if(this.getPageCount() ==1) {

        // pageString.append("<strong> 1</strong> ");

      }else {

        if(this.currentPage >1) {// 如果当前页数大于1,<< <可用

          pageString.append("<a class=&#39;pagination-first&#39; "+firstClick+" title=&#39;首页&#39; href=&#39;" + this.pageURL

              +"?currentPage=1&#39;><<</a> ");

          pageString.append("<a class=&#39;pagination-prev&#39; "+preClick+"title=&#39;上一页&#39; href=&#39;" + this.pageURL

              +"?currentPage=" + (this.currentPage -1)

              +"&#39;><</a> ");

        }else {

          pageString

              .append("<a class=&#39;pagination-first&#39;><<</a> ");

          pageString

              .append("<a class=&#39;pagination-prev&#39;><</a> ");

        }

        // 定义向前偏移量

        intpreOffset = this.currentPage -1 > this.pagePreOffset ?this.pagePreOffset

            :this.currentPage -1;

        // 定义向后偏移量

        intnextOffset = this.getPageCount() -this.currentPage >this.pageNextOffset ?this.pageNextOffset

            :this.getPageCount() -this.currentPage;

        // 循环显示链接数字,范围是从 当前页减向前偏移量 到 当前页加向后偏移量

        for(int i = (this.currentPage - preOffset); i <= (this.currentPage + nextOffset); i++) {

          String numClick=" onclick=&#39;ajaxpage(""+this.pageURL+ "?currentPage=" + (i)+"");return false;&#39; ";

          if(this.currentPage == i) {// 当前页要加粗显示

            pageString

                .append("<strong style=&#39;color:black;border:0&#39;>"

                    + i +"</strong> ");

          }else {

            pageString.append("<a "+numClick+"href=&#39;"+ this.pageURL

                +"?currentPage=" + i + "&#39;>" + i +"</a> ");

          }

        }

        // 如果当前页小于总页数,> >>可用

        if(this.currentPage <this.getPageCount()) {

          pageString.append("<a class=&#39;pagination-next&#39; "+nextClick+" title=&#39;下一页&#39; href=&#39;" + this.pageURL

              +"?currentPage=" + (this.currentPage +1)

              +"&#39;>></a> ");

          pageString.append("<a class=&#39;pagination-last&#39; "+lastClick+"title=&#39;尾页&#39; href=&#39;" + this.pageURL

              +"?currentPage=" + (this.getPageCount()) +"&#39;>>></a> ");

        }else {

          pageString

              .append("<a class=&#39;pagination-next&#39; >></a> ");

          pageString

              .append("<a class=&#39;pagination-last&#39;>>></a> ");

        }

        pageString.append("<select id=&#39;pageSelect&#39; "+onChange+">"+this.getOptions()+"</select>");

      }

    }else if("normalStyle".equalsIgnoreCase(this.pageStyle)) {

      if(this.getPageCount() ==1) {

        pageString.append("<strong> 共1页</strong> ");

      }else {

        if(this.currentPage >1) {

          pageString.append("<a class=&#39;pagination-first&#39; "+firstClick+" title=&#39;首页&#39; href=&#39;" + this.pageURL

              +"?currentPage=1&#39;><<</a> ");

          pageString.append("<a class=&#39;pagination-prev&#39; "+preClick+"title=&#39;上一页&#39; href=&#39;" + this.pageURL

              +"?currentPage=" + (this.currentPage -1)

              +"&#39;><</a> ");

        }else {

          pageString

            .append("<a class=&#39;pagination-first&#39;><<</a> ");

          pageString

            .append("<a class=&#39;pagination-prev&#39;><</a> ");

        }

        pageString.append("<span class=&#39;pageinfo&#39;>第"+this.currentPage+"页/"+this.pageCount+"页</span>");

        if(this.currentPage <this.getPageCount()) {

          pageString.append("<a class=&#39;pagination-next&#39; "+nextClick+" title=&#39;下一页&#39; href=&#39;" + this.pageURL

              +"?currentPage=" + (this.currentPage +1)

              +"&#39;>></a> ");

          pageString.append("<a class=&#39;pagination-last&#39; "+lastClick+"title=&#39;尾页&#39; href=&#39;" + this.pageURL

              +"?currentPage=" + (this.getPageCount()) +"&#39;>>></a> ");

        }else {

          pageString

            .append("<a class=&#39;pagination-next&#39; >></a> ");

          pageString

            .append("<a class=&#39;pagination-last&#39;>>></a> ");

        }

        pageString.append("<select id=&#39;pageSelect&#39; "+onChange+">"+this.getOptions()+"</select>");

      }

    }

    pageString.append("</span></div>");

    this.pageDisplay = pageString.toString();

    returnpageDisplay;

  }

  publicvoid setPageDisplay(String pageDisplay) {

    this.pageDisplay = pageDisplay;

  }

  publicString getPageURL() {

    returnpageURL;

  }

  publicvoid setPageURL(String pageURL) {

    this.pageURL = pageURL;

  }

  publicint getPageCount() {

    this.pageCount =this.rowCount %this.sizePerPage ==0 ? (this.rowCount /this.sizePerPage)

        : (this.rowCount /this.sizePerPage) +1;

    returnthis.pageCount;

  }

  publicvoid setPageCount(intpageCount) {

    this.pageCount = pageCount;

  }

  publicint getRowCount() {

    returnrowCount;

  }

  publicvoid setRowCount(introwCount) {

    this.rowCount = rowCount;

  }

  publicint getCurrentPage() {

    returncurrentPage;

  }

  publicvoid setCurrentPage(intcurrentPage) {

    this.currentPage = currentPage;

  }

  publicint getSizePerPage() {

    returnsizePerPage;

  }

  publicvoid setSizePerPage(intsizePerPage) {

    this.sizePerPage = sizePerPage;

  }

  privateString getOptions(){

    StringBuffer sb =new StringBuffer();

    switch(this.sizePerPage) {

    case10: 

      sb.append("<option value=10>10</option><option value=20>20</option><option value=30>30</option><option value=50>50</option><option value=100>100</option>");

      break;

    case20:

      sb.append("<option value=20>20</option><option value=10>10</option><option value=30>30</option><option value=50>50</option><option value=100>100</option>");

      break;

    case30:

      sb.append("<option value=30>30</option><option value=10>10</option><option value=20>20</option><option value=50>50</option><option value=100>100</option>");

      break;

    case50:

      sb.append("<option value=50>50</option><option value=10>10</option><option value=20>20</option><option value=30>30</option><option value=100>100</option>");

      break;

    case100:

      sb.append("<option value=100>100</option><option value=10>10</option><option value=20>20</option><option value=30>30</option><option value=50>50</option>");

      break;

    }

    returnsb.toString();

  }

}

  

//后台调用

PageBean page = new PageBean();

setPageInfo(list,request);

public void setPageInfo(List list,HttpServletRequest request){

    page.setCurrentPage(this.getCurrentPage());

    if(request.getParameter("perSize")==null){

      page.setSizePerPage(20);//default 20

    }

    else{

      page.setSizePerPage(Integer.valueOf(request.getParameter("perSize")));

    }

    page.setRowCount(list.size());

    //page.setPageStyle("normalStyle");

    //page.setPagePreOffset(5);//default 10

    //page.setPageNextOffset(4);//default 9

    page.setPageURL(request.getRequestURL().toString());

}

[css] view plaincopyprint?

/**

**  CSS

*/

.numberStyle,.normalStyle {

  text-align:left;

}

.numberStyle a,.normalStyle a {

display: inline-block;

color: #5489F1;

text-decoration: none;

font-size: 14px;

font-weight:bold;

font-family: Geneva, Arial, Helvetica, sans-serif;

border: 1px solid #999;

width: 20px;

height: 20px;

line-height: 20px;

text-align: center;

background-position:center;

}

.numberStyle strong,.normalStyle strong {

display: inline-block;

color: #5489F1;

text-decoration: none;

font-size: 14px;

font-weight:bold;

font-family: Geneva, Arial, Helvetica, sans-serif;

border: 1px solid #999;

width: 20px;

height: 20px;

line-height: 20px;

text-align: center;

background-position:center;

}

.numberStyle a:hover,.normalStyle a:hover{

background-color: #d0d0d0;

}

.normalStyle .pageinfo{

  font-size: 14px;

  font-family: Geneva, Arial, Helvetica, sans-serif;

  color: #5489F1;

}

  

[javascript] view plaincopyprint?

/**

** JS import jquery.js before call function

*/

function ajaxpage(action){

  action=action+"&perSize="+$("#pageSelect").val();

  $.ajax( {

  type : "POST",

  url : action,

  success : function(msg) {

  //回调函数,后台拼接字符串返回msg

    //删除原有数据,添加新数据

    //比如:$("#displayTable>thead").nextAll().remove();$("#displayTable").append(msg);

  }

  });

}

登录后复制

   

更多使用Jquery+Ajax+Json如何实现分页显示附JAVA+JQuery实现异步分页相关文章请关注PHP中文网!

相关标签:
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板