博客列表 >Ajax无刷新分页案例(设置高亮显示)

Ajax无刷新分页案例(设置高亮显示)

零龙
零龙原创
2020年08月30日 20:51:18793浏览

jQuery无刷新分页

  • index.html 显示页面
  • data.php 获取数据页面
  • user.sql mysql数据文件

示例

  • index.html
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>Ajax-post无刷新分页技术</title>
  7. <style>
  8. table {
  9. border-collapse: collapse;
  10. border: 1px solid;
  11. text-align: center;
  12. margin: auto;
  13. width: 500px;
  14. }
  15. table caption {
  16. font-size: 1.2rem;
  17. margin-bottom: 10px;
  18. }
  19. th,
  20. td {
  21. border: 1px solid;
  22. padding: 5px;
  23. }
  24. thead tr:first-of-type {
  25. background-color: #ddd;
  26. }
  27. p {
  28. text-align: center;
  29. }
  30. p a {
  31. text-decoration: none;
  32. border: 1px solid;
  33. padding: 0 8px;
  34. }
  35. .active {
  36. background-color: #f00;
  37. }
  38. </style>
  39. </head>
  40. <body>
  41. <table>
  42. <caption>
  43. 用户信息表
  44. </caption>
  45. <thead>
  46. <tr>
  47. <th>id</th>
  48. <th>姓名</th>
  49. <th>年龄</th>
  50. <th>性别</th>
  51. <th>手机号</th>
  52. <th>邮箱</th>
  53. </tr>
  54. </thead>
  55. <tbody></tbody>
  56. </table>
  57. <!-- 分页条 -->
  58. <p></p>
  59. <script src="/0819/js/jquery-3.5.1.js"></script>
  60. <script>
  61. //默认第一页
  62. var page = 1;
  63. getPageData(page);
  64. function getPageData(page)
  65. {
  66. $.ajax({
  67. type : "post",
  68. url : "page.php",
  69. data : {page:page},
  70. dataType:"json",
  71. success : show,
  72. });
  73. function show(data)
  74. {
  75. //将JSON中的数据解析出来填充到表格中
  76. var str = "";
  77. var pages = data.pages;
  78. data.users.forEach(function(user)
  79. {
  80. str += "<tr>";
  81. str += "<td>" + user.Id + " </td>";
  82. str += "<td>" + user.username +"</td>";
  83. str += "<td>" + user.age +"</td>";
  84. str += "<td>" + user.sex +"</td>";
  85. str += "<td>" + user.mobile +"</td>";
  86. str += "<td>" + user.email +"</td>";
  87. str += "</tr>";
  88. });
  89. $("tbody").html(str);
  90. var w = pages-1;
  91. var c = parseInt(page) + 6;
  92. var d = parseInt(pages) - 8;
  93. var f = parseInt(pages) + 1;
  94. var t = parseInt(page) - 6;
  95. if(c > pages)
  96. {
  97. c = pages;
  98. }
  99. if(pages => 10 )
  100. {
  101. var str = "";
  102. for(var i = 1; i <= 10; i++)
  103. {
  104. str += '<a href ="" data-index= '+ i + ' id= ' + i + '>' + i + '</a>';
  105. }
  106. str += '<a href ="" data-index= "11">..</a>';
  107. str += '<a href ="" data-index= '+ w +'>' + w + '</a>';
  108. str += '<a href ="" data-index= '+ pages +'>' + pages + '</a>';
  109. }
  110. if(page > 10 && page <= pages)
  111. {
  112. var str = "";
  113. str += '<a href ="" data-index= "1">1</a>';
  114. str += '<a href ="" data-index= "2" id = "2" >2</a>';
  115. str += '<a href ="" data-index= '+ t +'>..</a>';
  116. for(var i = page-3; i < c-2; i++)
  117. {
  118. str += '<a href ="" data-index= '+ i + ' id=' + i + '>' + i + '</a>';
  119. }
  120. str += '<a href ="" data-index= '+ c +'>..</a>';
  121. str += '<a href ="" data-index= '+ (data.pages-1) +'>' + (data.pages-1) + '</a>';
  122. str += '<a href ="" data-index= '+ (data.pages) +'>' + data.pages + '</a>';
  123. }
  124. if(page > d)
  125. {
  126. var str = "";
  127. str += '<a href ="" data-index= "1">1</a>';
  128. str += '<a href ="" data-index= "2">2</a>';
  129. str += '<a href ="" data-index= '+ t +'>..</a>';
  130. for(var i = d; i < f; i++)
  131. {
  132. str += '<a href ="" data-index= '+ i +' id=' + i + '>' + i + '</a>';
  133. }
  134. }
  135. if(page > 1)
  136. {
  137. $("p").html(str).find("#"+ page +"").addClass("active");
  138. }
  139. else
  140. {
  141. $("p").html(str).find("a").first().addClass("active");
  142. }
  143. //3.添加分页点击事件
  144. $('p a').click(function(ev)
  145. {
  146. ev.preventDefault();
  147. var page = $(this).attr('data-index');
  148. $("tbody").html("");
  149. getPageData(page);
  150. });
  151. }
  152. }
  153. </script>
  154. </body>
  155. </html>
  • data.php
  1. <?php
  2. // 1. 连接数据库
  3. $pdo = new PDO('mysql:host=localhost;dbname=admin', 'root', 'root');
  4. // 2. 获取页码
  5. $page = $_POST['page'] ?? 1;
  6. // 3. 每页显示数量
  7. $num = 8;
  8. // 4. 每页显示偏移量
  9. $offset = ($page - 1) * $num;
  10. // 5. 总页数
  11. $sql = "SELECT CEIL(COUNT(`id`)/{$num}) AS `total` FROM `user`";
  12. // echo $sql;
  13. $pages = $pdo->query($sql)->fetch()['total'];
  14. // echo $pages;
  15. // 6. 分页数据
  16. $sql = "SELECT * FROM `user` LIMIT {$num} OFFSET {$offset}";
  17. $users = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
  18. // ajax分页数据一定是返回二部分
  19. // 1. 总页数, 提供给前端自动生成分页条
  20. // 2. 分页数据
  21. echo json_encode(['pages' => $pages, 'users' => $users]);
  22. die;

user.sql

示例图:

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议