XMLHttpRequest是Ajax的核心,通过调用XMLHttpRequest对象的属性和方法可以实现在客户端和浏览器之间进行数据的异步传输,从而实现页面的无刷新效果。
XMLHttpRequest对象的使用需要四个步骤:
(1) 初始化XMLHttpRequest对象
(2) 指定响应处理函数
(3) 发送HTTP请求
(4) 处理服务器返回的信息(服务器===后端,返回字符串)
XMLHttpRequest对象的常用属性:
onreadystatechange:指定当readyState属性值改变时的事件处理句柄(只写);
readyState:返回当前请求的状态(只读);
responseText:将相应信息作为字符串返回(只读);
XMLHttpRequest对象的常用方法:
open():创建一个新的HTTP请求,并制定此请求的方法,URL以及验证信息(用户名/密码);
send():发送请求到HTTP服务器并接受回应。
代码
1 | myBtn.addEventListener('click',(e)=>{ |
readyState属性用来表示请求的状态,有5个可取值,分别是:
“0”:表示未初始化,即对象已经建立,但是尚未初始化(尚未调用open()方法);
“1”:表示正在加载,此时对象已建立,尚未调用send()方法;
“2”:表示请求已发送,即send()方法已调用;
“3”:表示请求处理中;
“4”:表示请求已完成,即数据接收完毕。
JS 操作请求和响应
- JS 可以设置任意 请求 header 吗?
第一部分request.open('GET','./xxx')
第二部分request.setRequestHeader('Content-type','x-www-form-urlencoded')
第四部分request.send('a=1&b=2')
- JS 可以设置任意 响应 header 吗?
第一部分request.status/request.statusText
第二部分request.getResponseHeader()/request.getAllResponseHeaders()
第四部分request.responseText
自己实现 jQuery.ajax
第一版
1 |
|
第二版,增加 Promise 规则
1 | window.jQuery = function (nodeOr) { |
jQuery.ajax
1 | $.ajax({ |