Ajax
- ajax 全称为 Asynchronous Javascript And XML,就是异步的 js 和 xml
- ajax 请求是一种特殊的 http 请求,可以动态更新网页数据而无需重载页面
- 浏览器使用
XHR(XMLHttpRequest)对象或fetch函数发送 ajax 请求
Ajax 使用
- 创建 XMLHttpRequest 对象
js
let xhrObj = new XMLHttpRequest();- 设置请求信息
js
xhrObj.open(METHOD, URL);
xhrObj.setRequestHeader("content-type","application/x-www-form-urlencoded");- METHOD 可以是 GET、POST、HEAD、PUT、DELETE
- 发送请求
js
xhrObj.send();- 接受响应
js
xhrObj.onreadystatechange = () => {
if (xhrObj.readyState == 4 && xhrObj.status >= 200 && xhrObj.status < 300) {
let resData = JSON.parse(xhrObj.response);
console.log(resData);
}
};构造函数
XMLHttpRequest()创建 xhr 对象的构造函数
属性
xhrObj.status响应状态码xhrObj.statusText响应状态文本xhrObj.responseType用于定义响应类型的枚举值(enumerated value)xhrObj.responseText返回响应的文本内容xhrObj.response返回的响应体内容xhrObj.readState请求状态- 0 初始
- 1 open() 之后
- 2 send() 之后
- 3 请求中
- 4 请求完成
方法
xhrObj.open()初始化请求xhrObj.setRequestHeader()设置请求头,必须位于open()之后,send()之前xhrObj.send()发送请求xhrObj.abort()中断请求xhrObj.timeout()请求超时时间,0 为无限制xhrObj.getResponseHeader()返回包含指定相应头的值,参数为相应头属性名xhrObj.getAllResponseHeaders()返回所有响应头组成的字符串
事件绑定
xhrObj.ontimeout()请求超时时间监听xhrObj.onerror()请求错误的事件监听xhrObj.onreadystatechange()绑定状态改变事件监听
axios
- axios 是基于 xhr & promise 的异步 ajax 请求库
- 浏览器 / node 均可使用
- 支持请求 / 响应拦截 / 转换,支持取消请求
- 可以批量发送多个请求
- JSON 数据自动转换
- 客户端支持防止 XSRF(Cross-site request forgery 跨站请求伪造)
安装
本地安装
shell
yarn add axios -SCDN 引入
html
<script src="https://cdn.staticfile.org/axios/0.19.2/axios.min.js"></script>使用
- axios(config)
- axios(url[, config])
- axios.request(config)
- axios.get(url[, config])
- axios.delete(url[, config])
- axios.head(url[, config])
- axios.options(url[, config])
- axios.post(url[, data[, config]])
- axios.put(url[, data[, config]])
- axios.patch(url[, data[, config]])