Blogger Information
Blog 28
fans 0
comment 0
visits 21978
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Ajax无刷新上传
暝皑祯π_π
Original
846 people have browsed it

login.php

  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>登录</title>
  7. <style>
  8. form {
  9. background-color: aqua;
  10. display: grid;
  11. gap: 15px;
  12. width: 200px;
  13. padding: 20px;
  14. border-radius: 15px;
  15. margin: auto;
  16. }
  17. </style>
  18. </head>
  19. <body>
  20. <nav></nav>
  21. <form action="" method="POST" onsubmit="return false">
  22. <div>
  23. <label for="email">名称:</label>
  24. <input
  25. type="email"
  26. name="email"
  27. placeholder="请输入"
  28. required
  29. autofocus
  30. />
  31. </div>
  32. <div>
  33. <label for="password">密码:</label>
  34. <input type="password" name="password" placeholder="******" required />
  35. </div>
  36. <div>
  37. <button>登录</button>
  38. </div>
  39. </form>
  40. </body>
  41. <script src="login.js"></script>
  42. </html>

login.js

  1. // 获取form表单
  2. var form = document.querySelector("form");
  3. var but = document.querySelector("form button");
  4. but.onclick = function () {
  5. // 1. 创建Ajax对象
  6. var xhr = new XMLHttpRequest();
  7. // 2. 监听请求
  8. xhr.onreadystatechange = function () {
  9. if (xhr.readyState === 4 && xhr.status === 200) {
  10. console.log(xhr.responseText);
  11. // 将jsonl转js对象
  12. var res = JSON.parse(xhr.responseText);
  13. // console.log(res);
  14. switch (res.status) {
  15. case 0:
  16. case 1:
  17. dates = res.message;
  18. break;
  19. default:
  20. error = "未知错误";
  21. }
  22. // 将提示显示到表单中
  23. var span = document.createElement("span");
  24. span.innerHTML = dates;
  25. span.style.color = "red";
  26. form.appendChild(span);
  27. }
  28. };
  29. // 3. 初始化请求参数
  30. xhr.open("POST", "Ajax.php", true);
  31. // FormData
  32. var data = new FormData(form);
  33. data.append("login_time", new Date().getTime());
  34. // 5. 发送请求
  35. xhr.send(data);
  36. };
  37. // 清除提示信息
  38. var inputs = document.querySelectorAll("input");
  39. for (var i = 0; i < inputs.length; i++) {
  40. inputs[i].oninput = function () {
  41. if (but.nextElementSibling !== null)
  42. form.removeChild(but.nextElementSibling);
  43. };
  44. }

Ajax.php

  1. <?php
  2. session_start();
  3. // 拿到前端数据
  4. // echo $_POST['email'];
  5. // echo $_POST['password'];
  6. // 连接数据库
  7. $pdo = new PDO("mysql:host=js.cn;dbname=php","root","root");
  8. // 查询数据库中保存的用户信息
  9. $stmt = $pdo->prepare("SELECT * FROM `users`");
  10. $stmt->execute();
  11. $statues = $stmt->fetchall(PDO::FETCH_ASSOC);
  12. // print_r($statues) ;
  13. // 判断请求是否 正确
  14. if($_SERVER['REQUEST_METHOD'] === 'POST'){
  15. // 获取需要验证的信息
  16. $email = $_POST['email'];
  17. $password = md5($_POST['password']);
  18. $results = array_filter($statues, function($statue) use ($email, $password) {
  19. return $statue['email'] === $email && $statue['password'] === $password; //&&:且
  20. });
  21. // count:计算数组的单元数目
  22. // 如果results === 1;说明用户存在
  23. if (count($results) === 1) {
  24. $_SESSION['user'] = serialize(array_pop($results));
  25. echo json_encode(['status'=>1, 'message'=>'验证通过']);
  26. } else {
  27. echo json_encode(['status'=>0, 'message'=>'邮箱或密码错误']);
  28. }
  29. }

Ajax:getpost

  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>Document</title>
  7. </head>
  8. <body>
  9. <script>
  10. // GET请求
  11. // 创建Ajax对象
  12. var xhr = new XMLHttpRequest();
  13. // 监听请求回调
  14. xhr.onreadystatechange = function () {
  15. if (xhr.readyState == 4 && xhr.status == 200) {
  16. console.log(xhr.responseText);
  17. }
  18. };
  19. // 初始化请求参数
  20. xhr.open("get", "test8.php", true);
  21. // 发送请求
  22. xhr.send(null);
  23. // 第一种POST请求
  24. // 创建Ajax对象
  25. var xhr = new XMLHttpRequest();
  26. // 监听请求回调
  27. xhr.onreadystatechange = function () {
  28. if (xhr.readyState == 4 && xhr.status == 200) {
  29. console.log(xhr.responseText);
  30. }
  31. };
  32. // 初始化请求参数
  33. xhr.open("post", "test6.php", true);
  34. // 设置请求头:说明我要发送的是什么类型的数据
  35. xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded");
  36. // 要发送的数据
  37. var user = {
  38. email: "php@qq.com",
  39. password: "123456",
  40. };
  41. // 将数据进行josn序列化
  42. var date = JSON.stringify(user);
  43. // 发送请求
  44. xhr.send(date);
  45. // 第二种post请求
  46. // 通过请求头的设置,直接把发送的进行序列化发送,php免去反序列化的步骤,利用php://input接受数据
  47. // 创建Ajax对象
  48. var xhr = new XMLHttpRequest();
  49. // 监听请求回调
  50. xhr.onreadystatechange = function () {
  51. if (xhr.readyState == 4 && xhr.status == 200) {
  52. console.log(xhr.responseText);
  53. }
  54. };
  55. // 初始化请求参数
  56. xhr.open("post", "test6.php", true);
  57. // 设置请求头:说明我要发送的是什么类型的数据
  58. xhr.setRequestHeader("content-type", "application/json;charset=utf-8");
  59. // 要发送的数据
  60. var user = {
  61. email: "html@qq.com",
  62. password: "123456",
  63. };
  64. // 将数据进行josn序列化
  65. var date = JSON.stringify(user);
  66. // 发送请求
  67. xhr.send(date);
  68. </script>
  69. </body>
  70. </html>

总结

  • 把通过 按钮提交的表单信息同Ajax的方式进行提交,可以实现无刷新显示页面。
  • Ajax的两种请求方式
    • 1 GET
    • 2 POST
    • POS可以通过不同的请求头设置不同的提交数据类型
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:异步请求主要是解决了同步执行中的阻塞问题
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