原生ajax请求
原生发送ajax大致可分为5步:
- 实例化
XMLHttpRequest
对象。
XMLHttpRequest()
是内置的JavaScript
对象。它是浏览器提供的原生API
,无需任何额外的库或框架。你可以直接在JavaScript
代码中使用XMLHttpRequest()
对象,而无需进行任何安装或导入。
- 设置请求方法和地址。
- 使用
open()
方法设置
- 设置请求头
- 可以省略 如果后端需要,就要设置,不需要,设置了也没关系,可以自定义
setRequestHeader()
- 注册回调函数
- 发送请求
send()
示例:
1 |
|
xhr.readyState
表示
ajax
xhr
当前的状态码。返回值是 0、1、2、3、4
xhr.status
xhr.status
它实际上就是http状态码- 304: 资源未修改
- 协商缓存: 两个请求头:一个是
If-Modified-since
/If-None-match
- 览器在发送请求的时候,附加一个请求头,去问服务器,资源有没有改动。
- 服务器,看到了这个请求头, 就会去它自己的本地查看一下是否修改,如果没有修改,返回
304
。 - 告诉浏览器,资源没有修改,你可以直接用上次请求的那个资源。
xhr的load
load
表示的是readyStateChange
为4
即为load
事件, 一次ajax请求,只会触发一次。
示例:
1 |
|
- 就只是改变了监听事件
xhr.response
是根据响应头里面的content-type
自动解析的,一般是二进制的数据,音视频xhr.responseText
一般是文本数据,比如html
,json
,纯文本。
原生Ajax-get-请求传参
- 原生的
ajax
,get
没有params
,所以,直接拼接到url
上。 - 查询字符串 queryString url?key=val&key2=val2
示例:
1 |
|
- 直接拼接在
open()
方法url后面
原生Ajax-post-请求传参
- 如果是
post
请求,原生ajax,需要设置一个请求头,告诉后端,我发送的数据是什么格式的。 - 后端接口文档中写了需要什么样格式的数据!,我们照着设置就好了
示例:
1 |
|
- 请求参数写在
send()
方法中
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CJJJX's BLOG!