Blogger Information
Blog 48
fans 0
comment 0
visits 34145
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
jQuery的ajax操作,和无刷新分页(0820)
丶久而旧之丶
Original
851 people have browsed it

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标签,这个有点没搞懂。

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:jQuery还在更新呢
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post