博客列表 >Ajax异步编程

Ajax异步编程

王佳祥
王佳祥原创
2020年08月14日 21:46:45735浏览

Ajax异步编程

一、Ajax是什么?

  • ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换。ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。而传统的网页(不使用ajax)如果需要更新内容,必须重载整个网页面。

二、Ajax常用函数和关键字

函数名称/关键字 释义
JSON.parse() 将数据从字符串转换为 JavaScript 对象。
createElement() 通过指定名称创建一个元素
appendChild() 向节点的子节点列表的末尾添加新的子节点
JSON.stringify() 将JavaScript 对象转换为字符串

三、ajax与json实战

1.ajax的GET和POST两种方式

  1. - XMLHttpRequest 是浏览器提供的API,处理异步请求,并非js内置对象
  2. 基本流程:
  3. - GET方式:
  4. 1.创建请求对象:'new XMLHttpRequest()'
  5. 2.监听请求回调:'onreadystatechange'
  6. 3.初始化请求参数:'open(请求类型,请求地址,是否异步)'
  7. 4.发送请求:'send()'
  8. - POST方式:
  9. 1.创建请求对象:'new XMLHttpRequest()'
  10. 2.监听请求回调:'onreadystatechange'
  11. 3.初始化请求参数:'open(请求类型,请求地址,是否异步)'
  12. 4.设置请求头:'setRequestHeader()'
  13. 5.准备请求参数:可选'var data = ...'
  14. 6.发送请求:'send(data)'
  15. - POSTFormData来组织数据
  16. 1.创建请求对象:'new XMLHttpRequest()'
  17. 2.监听请求回调:'onreadystatechange'
  18. 3.初始化请求参数:'open(请求类型,请求地址,是否异步)'
  19. 4.使用FormData来组织数据:'var data = new FormData(form);'
  20. 5.发送请求:'send(data)'

2.ajax实战

  • demo7.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-json-formdata</title>
  7. </head>
  8. <body>
  9. <form action="" method="post" onsubmit="return false">
  10. <input
  11. type="email"
  12. name="email"
  13. placeholder="XXX@xxx.com"
  14. required
  15. autofocus
  16. />
  17. <input type="password" name="password" placeholder="密码" required />
  18. <button>提交</button>
  19. </form>
  20. </body>
  21. <script>
  22. //1.先获取表单和表单按钮
  23. var form = document.querySelector("form");
  24. var btn = document.querySelector("form button");
  25. //2.给按钮绑定事件
  26. btn.onclick = function () {
  27. //1.创建ajax对象
  28. var xhr = new XMLHttpRequest();
  29. //2.监听请求
  30. xhr.onreadystatechange = function () {
  31. if (xhr.readyState === 4 && xhr.status === 200) {
  32. console.log(xhr.responseText);
  33. var res = JSON.parse(xhr.responseText);
  34. console.log(res);
  35. switch (res.status) {
  36. case 0:
  37. case 1:
  38. error = res.message;
  39. break;
  40. default:
  41. error = "未知错误";
  42. }
  43. //将error信息渲染到页面中
  44. var span = document.createElement("sapn");
  45. span.innerHTML = error;
  46. span.style.color = "red";
  47. form.appendChild(span);
  48. }
  49. };
  50. //3.初始化请求参数
  51. xhr.open("POST", "test5.php");
  52. //4.使用FormData来组织数据,最终仍是以表单数据方式发送
  53. var data = new FormData(form);
  54. //data.append("email",form.email.value);
  55. //data.append("password",form.password.value);
  56. //5.发送请求,发送到服务器上的是json格式
  57. xhr.send(data);
  58. };
  59. </script>
  60. </html>
  • test5.php
  1. <?php
  2. //print_r($_POST);
  3. $users = [
  4. ['id'=>1,'email'=>'peter@php.cn','password'=>'123'],
  5. ['id'=>2,'email'=>'wang@php.cn','password'=>'asw'],
  6. ['id'=>3,'email'=>'li@php.cn','password'=>'753']
  7. ];
  8. $a = 0;
  9. $b = '验证失败';
  10. foreach($users as $user)
  11. {
  12. if($user['email'] == $_POST['email'] && $user['password'] == $_POST['password']){
  13. $a = 1;
  14. $b = '验证通过';
  15. }
  16. }
  17. echo json_encode(['status'=>$a,'message'=>$b]);




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