AJAX

125 阅读4分钟

概述

AJAX 异步的js和xml,主要是用于发送异步请求来发送请求数据 (同时他也支持同步)

同步和异步

同步(相当于一个队列按照先进先出的顺序执行) 异步(相当于多个队列 彼此之间没有联系)

线程和进程

  • 进程就是进行中的程序
  • 线程是进程的最小单位(js是单线程的语言)(work类 用于开辟工作线程)

请求和响应

  • 请求
  • 客户端请求服务器端 (携带数据)
  • 响应
  • 服务器端响应客户端(携带数据)

AJAX的请求过程

示例 浏览器访问百度图示

image.png

主要步骤

  • 浏览器实例化请求对象
  • 携带数据填充到请求对象,发送请求
  • 服务器接收请求 响应数据 (将响应数据填入到请求对象中)
  • 浏览器监听请求对象的状态变化
  • 在对应的监听处理中获取数据

代码实现

image.png

AJAX的核心对象及相关内容

核心对象

XMLhttpRequest

相关属性及方法

属性
  • readyState 表示当前xhr的状态码

  • status 表示http的状态码

  • responseText 表示对应的响应文本

  • upload 获取上传对象

  • timeout 设置超时时间 (可以赋值)

  • responseType 表示响应类型

  • responseurl 表示响url地址

  • responseXML 表示响应xml内容

  • responsetext 表示对应的响应文本 方法

  • open 打开连接

  • send 发送请求

  • setRequestHeader 设置请求头

  • getAllrsponeHeaders 获取所有的响应头

  • getResponseHeader 获取对应的响应头的值

  • overrideMimeType 接收mime来替换服务器返回的类型

请求和响应的构成

请求 (request)

请求头 请求头是用于携带头信息(优先解析请求头)

image.png

请求体

请求的内容主体

post 请求携带的数据 分段解析

响应 (response)

响应头

响应携带的头

image.png 响应体

响应的数据

readystate的值

image.png

status的值(http的状态码)

image.png

image.png

后端数据返回具备的内容

  • 相关数据 data
  • 对应的状态码 code
  • 对应解释信息 message
接口文档相关生成

swagger (结汇网站) ....

缓存

概述 缓存就相当于将当前内容进行下载,下次在访问的时候直接调用(速度快) 强制缓存

强制缓存就是不需要再次请求对应的服务器,直接访问缓存的内容(强制性操作)。当前内容或者文件必须没有变化,如果有点变化那么久不执行强制缓存,或者当前没有采用强制缓存,那么也不会走强制缓存。

强制缓存的实现

对应的响应头来设置的。

  • exoires 实现 (http 1.0)
  • cache-control 实现(http)

协商缓存

需要再次请求服务器验证当前的内容是否更改,如果更改那么重新返回数据,如果没有更改那么就走缓存(强制缓存的优先级高于协商缓存)

协商缓存的实现

主要是通过对应的响应头来进行验证的

  • last-modified 最后修改时间
  • etag 当前文件的标识

总结

  • 强制缓存 优先于协商缓存 执行 如果当前不走强制缓存那么就会访问协商缓存

  • 强制缓存不需要再去请求对应的服务器 而协商缓存需要重新请求服务器

  • 强制缓存使用expries来进行控制 (http1.0)(http1.2新增chache-control来进行控制)

  • 协商缓存使用last-modified及etage两个内容共同控制

  • 强制缓存使用 如果没有使用缓存 name返回对应的状态码为200,如果使用了那么就会保持之前返回的内容

  • 协商缓存 如果没有使用 那么返回状态码为200 如果使用了那么返回的状态码为304

  • 缓存可以减少对应http请求,提高浏览器的效率,减小服务器的压力。

get请求

概述

get请求是http1.0内置的请求,get请求为默认请求方式,get请求主要用于获取数据

主要特点

  • get请求为默认请求方式
  • get请求传参通过url拼接传参(?name=jack&age=18)
  • get传参有对应的大小限制(2kb)
  • get传参对应的数据是惨在请求头中

get封装

image.png

post请求

概述

post请求是将对应的数据封装成一个表单对象进行提交(http 1.0内置请求方式),需要指定请求方式为post

主要特点

  • post请求发送的树是存放在对应的请求体中进行提交的(容量大)
  • post请求不会暴露对应的数据在地址栏(较get而言更为安全)
  • post请求不会有历史记录 (get请求有历史记录)
  • post请求需要手动指定(指定请求方式为post)
  • post请求可以指定的提交的数据类型(默认为表单类型)

基础post 请求

image.png

测试工具

postman

示例

image.png