Ajax — 第六天

﹏ヽ暗。殇╰゛Y 2023-05-22 22:28 64阅读 0赞

Ajax-06

GET和POST的区别

  • 字面意思不同

    • GET 是获取意思。想从服务器获取数据,用GET方式的请求
    • POST是邮递、邮寄意思。如果提交数据到服务器,用POST方式
  • 请求参数位置不同

    • GET 请求参数会和url拼接到一起,形如 api/getbooks?id=2&age=3
    • POST 的请求参数,也叫做提交的数据,它不会和url拼接到一起
  • 浏览器工具查看请求参数的位置不一样

    • GET请求,会在url上查看到请求参数;在Headers/Query String Parameters也可以查看。
    • POST方式,只能在Headers/Form Data位置查看提交的数据
  • 携带的数据量大小不一样

    • GET方式能够携带少量的数据,一般浏览器允许的url的长度是2k
    • POST方式能够携带的数据量大小没有限制。
  • 上传文件

    • 上传文件只能使用POST方式。
  • 本质的区别

    • GET方式不会对服务器的数据做出改变
    • POST方式非常可能对服务器的数据做出改变

如果后端同学提供的接口没有使用正确的请求方式,我们前端也没有办法。

同步和异步

Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML)。

和异步相对的是同步。

说起JS中的同步和异步,需先了解 JS 的单线程。

JS单线程

JS的单线程,指的是执行代码的时候,只能从前向后(从上到下),一个一个任务去执行。前面的任务没有执行完,后面的任务只能等待。

  1. // 写一个函数,函数的执行需要大量的时间
  2. // 1 1 2 3 5 8 13 21 .... 斐波那契数列
  3. // 要求给出一个位置,计算得出该位置的数字是什么?
  4. function fn (n) {
  5. if (n === 1 || n == 2) {
  6. return 1;
  7. }
  8. return fn(n-1) + fn(n-2);
  9. }
  10. console.log(111);
  11. console.log( fn(43) );
  12. console.log(222);
  13. console.log(222);
  14. console.log(222);
  15. console.log(222);
  16. console.log(222);

同步

同步,即同步任务,指的就是JS代码需从上到下依次执行,前面的代码如果没有执行完毕,后面代码的执行只能等待。

特点:阻塞后续代码的执行

异步

异步,即异步任务。异步任务的执行比较复杂。比如一段代码,包含同步和异步任务,具体来说

  1. 优先执行同步任务
  2. 遇到异步任务,会把异步任务放到队列中,简单的理解就是排队等待
  3. 同步任务执行完毕,会按顺序执行队列中的异步任务
  4. 多个异步任务之间,可以同时执行。
  5. 哪一个异步任务先结束,则优先处理该异步任务的结果。

[
在这里插入图片描述

JS中的异步任务列举

  • 定时器
  • 事件
  • Ajax请求
  • 异步读写文件(Node中的知识点)
  • 查询MySQL数据库(Node中的知识点)

初次之外都是同步代码

Ajax中的异步

Asynchronous – 异步。

  1. console.log(111);
  2. let xhr = new XMLHttpRequest();
  3. xhr.onload = function () {
  4. console.log(333);
  5. };
  6. // xhr.responseType = 'json'; // 同步请求不能设置responseType
  7. // open(请求方式, url, true)
  8. // 第三个可选参数,默认 true,表示ajax请求是异步请求
  9. // 如果希望发送一个同步的ajax请求,第三个参数设置为false
  10. xhr.open('GET', 'http://www.liulongbin.top:3006/api/getbooks', false);
  11. xhr.send();
  12. console.log(222);

虽然可以通过open方法的第三个参数,来设置ajax为同步任务,但是强烈不建议这么做

jQuery中,能不能设置ajax的同步或异步:

  1. $.ajax({
  2. type: 'GET',
  3. url: 'xxx',
  4. async: true, // 默认true表示异步。如果设置为false,则表示同步
  5. });

小练习:体会一下异步任务的执行:

  1. console.log(111);
  2. // 异步ajax请求,请求书籍数据 ---------------------------------
  3. let xhr = new XMLHttpRequest();
  4. xhr.onload = function () {
  5. console.log(333);
  6. };
  7. xhr.open('GET', 'http://www.liulongbin.top:3006/api/getbooks');
  8. xhr.send();
  9. // 再次发生一个ajax请求 ------------------------------------
  10. let xhr2 = new XMLHttpRequest();
  11. xhr2.onload = function () {
  12. console.log(444);
  13. };
  14. xhr2.open('GET', 'http://www.liulongbin.top:3006/api/delbook?id=1');
  15. xhr2.send();
  16. console.log(222);

HTTP协议(了解)

HTTP协议简介

  • 什么是http协议

    • 超文本传输协议
  • http协议规定了什么

    • 规定了客户端和服务器交互数据的时候,数据要遵守的格式。

http请求消息/请求报文

请求报文,指的是客户端提交给服务器的全部数据。

  • 请求行

    • 请求方式
    • 请求url地址
    • 协议及版本
  • 请求头

    • 键:值 的形式,一次请求,可能会有很多请求头
    • Content-Type: ‘application/x-www-form-urlencoded’ / ‘multipart/form-data; xxx’

      • 提交的数据的一种编码格式(查询字符串格式 / FormData格式)
    • User-Agent: ‘’

      • 体现了当前客户端是什么浏览器、版本是什么版本
  • 请求体

    • xhr.send(请求体); 客户端提交的数据就是请求体

      • GET方式没有请求体
      • POST方式 才有请求体

http响应消息/响应报文

  • 响应行

    • 协议及版本
    • http状态码 (比如, 200)
    • http状态描述信息 (比如, OK)
  • 响应头

    • Access-Control-Allow-Origin: ‘*’

      • CORS跨域资源共享,服务器设置的响应头,允许ajax跨域
    • Content-Type: ‘application/json; charset=utf-8’

      • 服务器告诉客户端,返回的数据是什么格式的,编码是什么编码

        1. $.get(url, data, callback, dataType);
        2. - dataType 表示预期服务器返回的类型
        3. jQuery如何知道服务器返回的数据类型呢?是根据响应头中的Content-Type判断,如果判断服务器返回的是json格式,所以jQuery内部就会自动调用JSON.parse()将JSON格式的数据转成JS数组或对象
        4. $.get(url, data, function (res) {
        5. 如果响应头没有没有Content-Type,则res 就是字符串
        6. 手动指定最后一个dataTypejson之后,res就是JS对象
        7. });
  • 响应体

    • 服务器返回的主体内容。
    • 就是我们之前所说的,服务器返回的数据。

http响应状态码

  • 200(OK)表示请求成功
  • 201(Created)请求成功,一般用于添加资源成功
  • 304 (Not Modified)表示请求的资源没有修改(第一次请求)
  • 400(Bad Request)语法有误(一般来说,请求参数写错了或者请求头写错了)
  • 403(Forbidden)访问成功了,但是服务器告诉你没有权限访问
  • 404(Not Found)请求的资源,在服务器上不存在,找不到。
  • 500()服务器内部错误

发表评论

表情:
评论列表 (有 0 条评论,64人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SpringMvc

    > 游人五陵去,宝剑值千金。分手脱相赠,平生一片心。 《送朱大入秦》 孟浩然 字浩然,号孟山人,今湖北襄阳人 又称之为“孟山人 多写山水田园和隐居的逸兴以及羁旅行役的心情 1

    相关 TDtree冲刺

    昨天感觉把大部分账户有关的界面都做到差不多了 今天把队友们要了代码,连接报了好多错误,最后还好把自己的备份了,,,链接没成功,还是把退出账号的跳转做了。 遇到的问题就是连接

    相关

    今日所得   元组及内置方法   字典及内置方法   集合及内置方法   字符编码 元组(有序)   作用:和列表类似可存储多个值,但是元组本身不能改变,一旦生成元