博客列表 >jQuery的ajax操作,和无刷新分页(0820)

jQuery的ajax操作,和无刷新分页(0820)

丶久而旧之丶
丶久而旧之丶原创
2020年10月03日 21:45:48855浏览

jQuery的ajax操作

jQuery事件

  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>jquery事件</title>
  7. <style>
  8. form {
  9. width: 300px;
  10. height: 200px;
  11. margin: 20px auto;
  12. background-color: bisque;
  13. display: flex;
  14. flex-flow: column;
  15. justify-content: space-evenly;
  16. align-items: center;
  17. border-radius: 10px;
  18. }
  19. .item {
  20. margin-left: -120px;
  21. }
  22. .btn {
  23. width: 100px;
  24. height: 30px;
  25. }
  26. .lab {
  27. margin-left: 17px;
  28. }
  29. h2 {
  30. text-align: center;
  31. color: cadetblue;
  32. }
  33. </style>
  34. </head>
  35. <body>
  36. <h2>用户登录</h2>
  37. <form action='' method="GET">
  38. <div>
  39. <label for="username">用户名:</label>
  40. <input type="text" id="username" name="username" autofocus value="明仔" placeholder="请输入用户名">
  41. </div>
  42. <div class="lab">
  43. <label for="password">密码:</label>
  44. <input type="password" id="password" name="password" value="123456" placeholder="请输入密码">
  45. </div>
  46. <div class="item">
  47. <label for="config">是否记住密码</label>
  48. <input type="checkbox" name="config" id="config" value="1" checked>
  49. </div>
  50. <div><button class='btn'>登录</button></div>
  51. </form>
  52. <script src="../lib/jquery-3.5.1.js"></script>
  53. <script>
  54. $("form").submit(function (ev) {
  55. // 禁用表单的默认行为
  56. ev.preventDefault();
  57. });
  58. // 验证用户名是正确
  59. // 先获取用户名输入框
  60. var user = $("input[name=username]");
  61. // 失去焦点事件
  62. user.blur(function () {
  63. // 提示
  64. var tips = "";
  65. // 演示从数据库获取的用户名数据
  66. var users = ["useradmin", "admin", "adminpwd"];
  67. if ($(this).val().trim().length === 0) {
  68. // 如果有空格清除空格并重新获取焦点
  69. $(this).val("")
  70. $(this).focus();
  71. tips = "用户名不能为空";
  72. } else if (users.indexOf($(this).val()) === -1) {
  73. // 验证用户名输入框内容是否在数据中
  74. tips = "用户名不存在请:" + "<button type='button'>注册</button>";
  75. } else {
  76. tips = "<span style='color:green'>用户名正确</span>"
  77. }
  78. // 防止重复添加
  79. if ($(this).parent().next().get(0).tagName !== "SPAN") {
  80. $("<span>").html(tips).css("color", "red").insertAfter($(this).parent());
  81. }
  82. // 用户重新输入内容时提示信息消失
  83. user.on("keydown", function () {
  84. $(this).parent().next("span").remove();
  85. })
  86. });
  87. </script>
  88. </body>
  89. </html>

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. <title>jQuery的ajax</title>
  7. <style>
  8. div {
  9. width: 400px;
  10. height: 300px;
  11. display: flex;
  12. flex-flow: column;
  13. }
  14. button {
  15. margin: 5px;
  16. }
  17. </style>
  18. </head>
  19. <body>
  20. <div>
  21. <button>1.load()请求数据</button>
  22. <button>2.$.get()请求数据</button>
  23. <button>3.$.post()请求数据</button>
  24. <button>4.get.JSON()请求JSON数据</button>
  25. <button>5.ajax()请求数据</button>
  26. <button>6.$.ajax()-jsonp-跨域请求数据1</button>
  27. <button>7.$.ajax()-jsonp-跨域请求数据2</button>
  28. </div>
  29. <script src="../lib/jquery-3.5.1.js"></script>
  30. <script>
  31. // 1.load()方法获取html片段
  32. $("button:first-of-type").click(function () {
  33. // 插入到前面
  34. // $(this).before("<div>").prev().load("load.html");
  35. // 插入到后面
  36. $("<div>").load("load.html").insertAfter($(this));
  37. });
  38. // 2.get()方法
  39. $("button:nth-of-type(2)").click(function (ev) {
  40. $.get("ceshi.php", { id: 1 }, function (data) {
  41. $("<div>").html(JSON.parse(data)).insertAfter($(ev.target));
  42. // console.log(JSON.parse(data))
  43. });
  44. });
  45. // 3.post方法
  46. $("button:nth-of-type(3)").click(function (ev) {
  47. $.post("ceshi.php", { id: 2 }, function (data) {
  48. $("<div>").html(JSON.parse(data)).insertAfter($(ev.target));
  49. })
  50. });
  51. // 4.$.get.JSON()方法
  52. $("button:nth-of-type(4)").click(function (ev) {
  53. $.getJSON("ceshi.php", { id: 3 }, function (data) {
  54. $("<div>").html(data).insertAfter($(ev.target));
  55. })
  56. });
  57. // 5.$.ajax()方法
  58. $("button:nth-of-type(5)").click(function (ev) {
  59. $.ajax({
  60. // 请求类型
  61. type: "GET",
  62. // 请求的url
  63. url: "ceshi.php",
  64. // 发送的数据
  65. data: { id: 4 },
  66. // 返回类型
  67. dataType: 'json',
  68. success: function (data) {
  69. $("<div>").html(data).insertAfter($(ev.target));
  70. }
  71. });
  72. });
  73. // 6.-jsonp-跨域请求数据1
  74. $("button:nth-of-type(6)").click(function (ev) {
  75. $.ajax({
  76. type: "GET",
  77. url: "http://phpio.com/JSONP.php?jsonp=?&id=1",
  78. dataType: "jsonp",
  79. success: function (data) {
  80. var date = "<li>" + data.title + "</li>";
  81. date += "<li>" + data.user.name + "</li>";
  82. date += "<li>" + data.user.result + "</li>";
  83. $("<div>").html(date).insertAfter($(ev.target));
  84. },
  85. });
  86. });
  87. // 7.-jsonp-跨域请求数据2
  88. $("button:last-of-type").click(function (ev) {
  89. $.ajax({
  90. type: "GET",
  91. url: "http://phpio.com/JSONP.php?jsonp=?&id=3",
  92. dataType: "jsonp",
  93. jsonpCallback: "get",
  94. });
  95. });
  96. function get(data) {
  97. var date = "<li>" + data.title + "</li>";
  98. date += "<li>" + data.user.name + "</li>";
  99. date += "<li>" + data.user.result + "</li>";
  100. $("<div>").html(date).insertAfter($("button:last-of-type"));
  101. };
  102. </script>
  103. </body>
  104. </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>post分页</title>
  7. <style>
  8. table {
  9. border: 1px solid black;
  10. border-collapse: collapse;
  11. width: 300px;
  12. margin: 30px auto;
  13. text-align: center;
  14. }
  15. td {
  16. border: 1px solid;
  17. }
  18. thead {
  19. background-color: lightblue;
  20. font-size: 1.2rem;
  21. }
  22. p {
  23. text-align: center;
  24. }
  25. p>a {
  26. text-decoration: none;
  27. border: 1px solid black;
  28. padding: 0 5px;
  29. color: lightslategray;
  30. }
  31. .active {
  32. background-color: lightslategray;
  33. color: lightyellow;
  34. }
  35. </style>
  36. </head>
  37. <body>
  38. <table>
  39. <caption>用户信息</caption>
  40. <thead>
  41. <tr>
  42. <td>ID</td>
  43. <td>姓名</td>
  44. <td>性别</td>
  45. </tr>
  46. </thead>
  47. <tbody></tbody>
  48. </table>
  49. <!-- 分页条 -->
  50. <p></p>
  51. <script src=" ../lib/jquery-3.5.1.js"></script>
  52. <script>
  53. // 默认第一页
  54. var page = 1;
  55. // 显示第一页
  56. get(page);
  57. function get(page) {
  58. $.ajax({
  59. type: "POST",
  60. url: "fenye.php",
  61. data: { page: page },
  62. dataType: "json",
  63. success: show,
  64. });
  65. };
  66. function show(data) {
  67. // console.log(data);
  68. // 显示数据
  69. var str = "";
  70. data.user.forEach(function (item) {
  71. str += "<tr>";
  72. str += "<td>" + item.id + "</td>";
  73. str += "<td>" + item.username + "</td>";
  74. str += "<td>" + item.sex + "</td>";
  75. str += "</tr>";
  76. });
  77. $("tbody").html(str);
  78. // 显示分页条
  79. var a = "";
  80. for (var i = 0; i < data.pages; i++) {
  81. a += '<a href="" data-index=' + (i + 1) + ">" + (i + 1) + "</a>"
  82. }
  83. // 把分页条显示到页面中
  84. $("p").html(a);
  85. // 生成a标签的高亮
  86. $("a").get(data.page - 1).classList.add("active");
  87. }
  88. $("p").click(function (ev) {
  89. // 先禁用默认行为
  90. ev.preventDefault();
  91. // 获取页码
  92. page = $(ev.target).data("index");
  93. get(page);
  94. });
  95. </script>
  96. </body>
  97. </html>

PHP代码

  1. <?php
  2. // 分页数据脚本
  3. // 连接数据库
  4. $pdo = new PDO("mysql:host=localhost;dbname=user;charset=utf8;", "root", "root");
  5. // 获取页码
  6. $page = $_POST['page'] ?? 1;
  7. // 每页显示数量
  8. $num = 7;
  9. // 每页偏移量
  10. $offset = ($page - 1) * $num;
  11. // 获取总页数
  12. $sql = "SELECT CEIL(COUNT(`id`)/{$num}) AS `total`FROM `apple`";
  13. // $sql = "SELECT * FROM `apple`";
  14. $pages = $pdo->query($sql)->fetch(PDO::FETCH_ASSOC)['total'];
  15. // 获取分页数据
  16. $sql = "SELECT * FROM `apple` LIMIT {$num} OFFSET {$offset}";
  17. $user = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
  18. // 返回给前端数据
  19. echo json_encode(["pages" => $pages, "user" => $user, "page" => $page]);

总结

1.一开始是想着和之前一样点击后把之前的高亮去除后再添加,点击事件忙活了一下才发现一开始设置高亮的代码不能写死,不然每次执行show方法时只有第一个有高亮显示
2.有个疑问就是,一开始是想着在show方法外面设置高亮,那么就可以实现先取消高亮然后通过点击再设置高亮,但是在show方法外面获取不到a标签,只有在show方法里面才能获取的到a标签,这个有点没搞懂。

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