博客列表 >js学习:第21章 事件与Ajax实战、无刷分页(补)

js学习:第21章 事件与Ajax实战、无刷分页(补)

王小飞
王小飞原创
2020年05月30日 22:28:56827浏览

Ajax

代码:

  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. <script src="lib/jquery-3.5.1.js"></script>
  7. <title>Ajax</title>
  8. <style>
  9. body {
  10. display: grid;
  11. gap: 15px;
  12. }
  13. button {
  14. text-align: left;
  15. height: 26px;
  16. }
  17. button:hover {
  18. background-color: #ddd;
  19. cursor: pointer;
  20. }
  21. </style>
  22. </head>
  23. <body>
  24. <button type="button">1. load()请求数据</button>
  25. <button type="button">2. $.get()请求数据</button>
  26. <button type="button">3. $.post()请求数据</button>
  27. <button type="button">4. $.getJSON()请求JSON数据</button>
  28. <button type="button">5. $.ajax()请求数据</button>
  29. <button type="button">6. $.ajax()-jsonp-跨域请求数据1</button>
  30. <button type="button">7. $.ajax()-jsonp-跨域请求数据2</button>
  31. </body>
  32. </html>
  33. <script>
  34. var cl = console.log.bind(console);
  35. // 1. load(): 加载html片断
  36. $("button:first-of-type").click(function () {
  37. $(this).after("<div>").next().load("nav.html");
  38. });
  39. // 2. $.get():以get方式从服务器获取资源/数据
  40. $("button:nth-of-type(2)").click(function (ev) {
  41. // $.get(url, data, callback)
  42. $.get("users.php", { id: 2 }, function (data) {
  43. // cl(data);
  44. $(ev.target).after("<div>").next().html(data);
  45. });
  46. });
  47. // 3. $.post():以post方式从服务器获取资源/数据
  48. $("button:nth-of-type(3)").click(function (ev) {
  49. // $.post(url, data, callback)
  50. $.post("users.php", { id: 4 }, function (data) {
  51. // cl(data);
  52. $(ev.target).after("<div>").next().html(data);
  53. });
  54. });
  55. // 4. $.getJSON():接口返回的大多是JSON
  56. $("button:nth-of-type(4)").click(function (ev) {
  57. // $.getJSON(url, data, callback)
  58. $.getJSON("users.php?id=2", function (data) {
  59. // 返回就是js对象了, 不必转换
  60. // cl(JSON.parse(data));
  61. cl(data);
  62. var res = data.id + ": " + data.name + ", " + data.age + "岁";
  63. $(ev.target).after("<div>").next().html(res);
  64. });
  65. });
  66. // 5. $.ajax(): 终级方法, 实际上大家只需要掌握这一个方法
  67. // $.ajax({
  68. // // 请求类型
  69. // type: "GET",
  70. // // 请求的URL
  71. // url: url,
  72. // // 发送的数据
  73. // data: data,
  74. // // 期望服务器返回/响应的数据类型
  75. // dataType: "json",
  76. // // 成功时的回调函数
  77. // success: callback,
  78. // });
  79. $("button:nth-of-type(5)").click(function (ev) {
  80. $.ajax({
  81. type: "GET",
  82. url: "users.php",
  83. data: { id: 10 },
  84. dataType: "html",
  85. success: function (data) {
  86. $(ev.target).after("<div>").next().html(data);
  87. },
  88. });
  89. });
  90. // "http://php.edu/0522/test2.php?jsonp=handle&id=3";
  91. // 6. $.ajax()-jsonp-1:跨域请求
  92. $("button:nth-of-type(6)").click(function (ev) {
  93. $.ajax({
  94. type: "GET",
  95. url: "http://127.0.0.1/0522/test2.php?jsonp=?&id=2",
  96. dataType: "jsonp",
  97. success: function (data) {
  98. cl(data);
  99. var data = JSON.parse(data);
  100. cl(data);
  101. var data =
  102. "<p>" +
  103. data.title +
  104. "</p><p>" +
  105. data.user.name +
  106. ", 邮箱:" +
  107. data.user.email +
  108. "</p>";
  109. $(ev.target).after("<div>").next().html(data);
  110. },
  111. });
  112. });
  113. // 7. $.ajax()-jsonp-2:跨域请求
  114. $("button:last-of-type").click(function (ev) {
  115. $.ajax({
  116. type: "GET",
  117. url: "http://127.0.0.1/0522/test2.php?jsonp=?&id=2",
  118. dataType: "jsonp",
  119. jsonpCallback: "handle",
  120. });
  121. });
  122. function handle(data) {
  123. cl(data);
  124. var data = JSON.parse(data);
  125. cl(data);
  126. var data =
  127. "<p>" +
  128. data.title +
  129. "</p><p>" +
  130. data.user.name +
  131. ", 邮箱:" +
  132. data.user.email +
  133. "</p>";
  134. $("button:last-of-type").after("<div>").next().html(data);
  135. }
  136. </script>

效果:

2. 无刷分页

代码:

  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. <script src="lib/jquery-3.5.1.js"></script>
  7. <title>Ajax无刷新分页技术</title>
  8. <style>
  9. table {
  10. border-collapse: collapse;
  11. border: 1px solid;
  12. text-align: center;
  13. margin: auto;
  14. width: 500px;
  15. }
  16. table caption {
  17. font-size: 1.2rem;
  18. margin-bottom: 10px;
  19. }
  20. th,
  21. td {
  22. border: 1px solid;
  23. padding: 5px;
  24. }
  25. thead tr:first-of-type {
  26. background-color: #ddd;
  27. }
  28. p {
  29. text-align: center;
  30. }
  31. p a {
  32. text-decoration: none;
  33. border: 1px solid;
  34. padding: 0 8px;
  35. }
  36. .active {
  37. background-color: #ddd;
  38. }
  39. </style>
  40. </head>
  41. <body>
  42. <table>
  43. <caption>
  44. 消费明细表表
  45. </caption>
  46. <thead>
  47. <tr>
  48. <th>id</th>
  49. <th>金额</th>
  50. <th>账户</th>
  51. <th>成员</th>
  52. <th>备注</th>
  53. <th>用户id</th>
  54. </tr>
  55. </thead>
  56. <tbody></tbody>
  57. </table>
  58. <!-- 分页条 -->
  59. <p></p>
  60. </body>
  61. <script>
  62. // 默认是第1页
  63. var page = 1;
  64. // 默认显示第一页,用一个函数来实现显示
  65. getPageData(page);
  66. // 分页函数
  67. function getPageData(page) {
  68. // ajax无刷新分页
  69. $.ajax({
  70. type: "post",
  71. url: "page_data.php",
  72. data: { page: page },
  73. dataType: "json",
  74. success: show,
  75. });
  76. }
  77. // 数据显示函数
  78. function show(data) {
  79. // 1. 显示表格数据
  80. console.log(data);
  81. console.log(data.pages);
  82. console.log(data.staffs);
  83. var str = "";
  84. data.staffs.forEach(function (staff) {
  85. str += "<tr>";
  86. str += "<td>" + staff.id + "</td>";
  87. str += "<td>" + staff.jine + "</td>";
  88. str += "<td>" + staff.zhanghu + "</td>";
  89. str += "<td>" + staff.chengyuan + "</td>";
  90. str += "<td>" + staff.beizhu + "</td>";
  91. str += "<td>" + staff.yonghuid + "</td>";
  92. str += "</tr>";
  93. });
  94. // $("tbody").append(str);
  95. $("tbody").html(str);
  96. // 2. 显示分页条
  97. var str = "";
  98. for (var i = 1; i <= data.pages; i++) {
  99. // $("<a>").attr("href", "").attr("data-index", i).html(i).appendTo("p");
  100. str += '<a href="" data-index=' + i + ">" + i + "</a>";
  101. }
  102. // 将页码添到分页条, 并将当前页置为高亮
  103. $("p")
  104. .html(str)
  105. .find("a")
  106. .eq(page - 1)
  107. .addClass("active");
  108. // 分页条的点击事件
  109. $("p a").click(function (ev) {
  110. // 禁用<a>的跳转默认行为
  111. ev.preventDefault();
  112. page = $(this).attr("data-index");
  113. $("tbody").html("");
  114. getPageData(page);
  115. });
  116. }
  117. </script>
  118. </html>

效果:

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