ajax
AJAX
Ajax 简介
AJAX = Asynchronous JavaScript And XML
- 网页中发生一个事件(页面加载、按钮点击)
- 由 JavaScript 创建 XMLHttpRequest 对象
- XMLHttpRequest 对象向 web 服务器发送请求
- 服务器处理该请求
- 服务器将响应发送回网页
- 由 JavaScript 读取响应
- 由 JavaScript 执行正确的动作(比如更新页面)
Ajax 使用
XMLHttpRequest 对象用于同后台服务器交换数据
1 | let request = new XMLHttpRequest(); |
- readyState 请求状态
- 0:已创建对象未调用open方法
- 1:已调用open方法
- 2:已调用send方法已接收响应头
- 3:数据接收中
- 4:请求完成,数据接收完成或失败
- status 服务器响应状态
- responseText 请求返回的数据
请求数据类型 Content-Type
- application/x-www-form-urlencoded
url 末尾加, ? 接 = 连接的键值对, 以 & 分隔多个参数
https://www.baidu.com?id=1&name=Lily
中文字符等会进行 URL 编码
使用 decodeURL() 编码,encodeURL() 解码
Ajax 默认请求数据类型
- application/json
json 数据类型
- multipart/form-data
常用于上传文件
Ajax 新特性
- 设置请求时限
1 | // 请求时限 |
- 使用 FormData 对象管理表单
1 | let data = new FormData(); |
- 上传文件
1 | // 获取文件 |
- 获取数据传输进度信息
1 | request.upload.onprogress = function (e) { |
jQuery 的 Ajax
- $.ajax() 方法
1 | $('#button').on('click', function () { |
- $(document).ajaxStart() 方法
在 Ajax 请求发送前执行函数
1 | $(document).ajaxStart(function () { |
- $(document).ajaxStop() 方法
在 Ajax 请求结束执行函数
axios
专注于网络数据请求的库
目前最主流的
- axios.get & axios.post
1 | axios.get(url, params) |
axios.get(url[, config])
axios.post(url[, data[, config]])
- axios({})
1 | // promise 语法 |