• XMLHttpRequest-原生Ajax写法


    xhr 的 readyState 属性表示当前Ajax请求所处的状态:

    open()函数的第三个参数表示是否开启异步请求,false:同步;true:异步

     xhr 发起 GET 请求

    1. // 1.创建xhr对象
    2. let xhr = new XMLHttpRequest();
    3. //设置超时时间
    4. xhr.timeout=3000
    5. //设置超时后的处理函数
    6. xhr.ontimeout=function(){}
    7. // 2.调用xhr.open()函数----不带参数
    8. xhr.open(
    9. "GET",
    10. "http://www.liulongbin.top:3006/api/getbooks",
    11. true
    12. );
    13. // 2.调用xhr.open()函数---带参数(查询字符串)
    14. // xhr.open("GET", "http://www.liulongbin.top:3006/api/getbooks?id=1", true);
    15. // 3.调用xhr.send()函数
    16. xhr.send();
    17. // 4.监听xhr.onreadystatechange事件
    18. xhr.onreadystatechange = function () {
    19. console.log("xhr.status", xhr.status);//打印三次
    20. if (xhr.readyState === 4 && xhr.status == 200) {
    21. console.log(xhr.responseText);
    22. console.log(xhr.response);
    23. // 返回的参数为json格式,需要转换为对象格式
    24. const result = JSON.parse(request.responseText)
    25. }
    26. };

    xhr 发起 POST 请求

    1. // 1.创建xhr对象
    2. let xhr = new XMLHttpRequest();
    3. // 2.调用xhr.open()函数
    4. xhr.open("POST", "http://www.liulongbin.top:3006/api/addbooks", true);
    5. // 3.设置 Content-Type 请求头----位置顺序不能变
    6. xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    7. // 4.调用xhr.send()函数
    8. xhr.send('bookname=水浒传&author=施耐庵&publisher=上海图书出版社');
    9. // 5.监听xhr.onreadystatechange事件
    10. xhr.onreadystatechange = function () {
    11. console.log("xhr.status", xhr.status);
    12. if (xhr.readyState === 4 && xhr.status == 200) {
    13. console.log(xhr.responseText);
    14. console.log(xhr.response);
    15. // 返回的参数为json格式,需要转换为对象格式
    16. const result = JSON.parse(request.responseText)
    17. }
    18. };

    使用 FormData 管理表单数据 

    1. // 新建 FormData 对象
    2. let fd = new FormData();
    3. // 为 FormData 添加表单项
    4. fd.append("uname", "zs");
    5. fd.append("upwd", "123456");
    6. // 创建xhr对象
    7. let xhr = new XMLHttpRequest();
    8. xhr.open("POST", "http://www.liulongbin.top:3006/api/formdata");
    9. //提交 FormData 对象,与提交网页表单的效果相同
    10. xhr.send(fd);
    11. xhr.onreadystatechange = function () {
    12. console.log("xhr.status", xhr.status);
    13. if (xhr.readyState === 4 && xhr.status == 200) {
    14. console.log(xhr.responseText);
    15. console.log(xhr.response);
    16. // 返回的参数为json格式,需要转换为对象格式
    17. const result = JSON.parse(request.responseText)
    18. }
    19. };

     使用 FormData快速获取表单数据

    1. // 获取表单元素
    2. let myForm = document.querySelector("#form");
    3. // 监听表单的submit事件
    4. myForm.addEventListener("submit", function(e) {
    5. e.preventDefault();
    6. // 根据 form 表单 创建 FormData 对象,会自动将表单填充到 FormData 对象中
    7. let fd = new FormData(myForm);
    8. // 创建xhr对象
    9. let xhr = new XMLHttpRequest();
    10. xhr.open("POST", "http://www.liulongbin.top:3006/api/formdata");
    11. //提交 FormData 对象,与提交网页表单的效果相同
    12. xhr.send(fd);
    13. xhr.onreadystatechange = function() {};
    14. });

     文件上传

     数据交换格式:服务器端与客户端间进行数据传输与交换的格式,前端包括:JSON 和 XML

     HTML 和XML区别:HTML 被设计用来描述网页的内容,是网页内容的载体;XML 被设计用来传输和存储数据,是数据的载体。XML 体积庞大,格式臃肿,传输效率低,在js中解析XML比较麻烦。

    JSON 结构的 key 必须使用英文的双引号包裹,value类型包含:数字、字符串、布尔值、null、数组、对象,不能使用undefined和函数作为值,且不能写注释

    序列化:把对象转换为字符串的过程,例如:调用 JSON.stringify()

    反序列化:把字符串转换为对象的过程,例如:调用 JSON.parse()

  • 相关阅读:
    服务部署:解决Docker容器与虚拟机主机之间MySql连接访问问题
    Linux系列之重定向操作
    Springboot 3.0之Spring Native初体验
    bat脚本字符串替换:路径中\需要替换,解决一些文件写入路径不对的问题
    万字总结:分布式系统的 38 个知识点
    linux centos出现No space left on device解决方案
    【李沐深度学习笔记】矩阵计算(4)
    多线程-- 原子访问和atomic原子操作类实现原理
    深入了解BLE(Bluetooth 5.3)持续更新...
    Flutter ☞ 常量
  • 原文地址:https://blog.csdn.net/wxiao_xiao_miao/article/details/127776834