Ajax
1.XMlHttpRequest对象
XMlHttpRequest是Ajax的基础,所有现代浏览器都支持XMLHttpRequest对象。
创建XMLHttpRequest对象:
var xhr;
if(window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else {
// IE5,IE6
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
2.open(method, url, async)
规定请求的类型、URL以及是否异步处理请求。
method:请求的类型;GET或POST url:文件在服务器的位置 async:true(异步)或false(同步)
3.send(string)
将请求发送到服务器。
string:POST请求发送的数据。
4.setRequestHeader(header, value)
设置请求的HTTP报文头。
header: 规定头的名称 value:规定头的值
5.resopnseText(resopnseXML)
来自服务器的响应。
resopnseText:获得字符串形式的响应数据 resopnseXML:获得XML形式的响应数据
6.abort()
终止请求。
7.onreadystatechange事件
当请求发送到服务器时,我们可以通过以下属性来监控请求状态的变化:
属性
描述
onreadystatechange
存储函数,每当readyState属性变化时,就会调用该函数
readyState
请求的状态。0:请求未初始化; 1:服务器已建立连接;2:请求已接收; 3:请求处理中; 4:请求已完成
status
http协议状态码
8.请求实例
function getXhr() { if(window.XMLHttpRequest) { return new window.XMLHttpRequest(); } else { return new ActiveXObject('Microsoft.XMLHTTP'); } }
1.实现get方法
function get(url) {
return new Promise((resolve, rejetct) => {
let xhr = getXhr();
xhr.open('GET',url,true);
xhr.onreadystatechange = function() {
if(this.readyState === 4) {
if(this.status === 200) {
resolve(this.responseText, this);
} else {
let reason = {
code: this.status,
response: this.response
};
reject(reason, this);
}
}
};
xhr.send();
});
}
2.实现post方法
function post(url, data) {
return new Promise((resolve, reject) => {
let xhr = getXhr();
xhr.open('post',url, true);
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.onreadystatechange = function() {
if(this.readyState === 4) {
if(this.status === 200) {
resolve(JSON.parse(this.responseText), this);
} else {
var reason = {
code: this.status,
response: this.response
}
reject(reason, this);
}
}
};
xhr.send(JSON.stringify(data));
});
}
Last updated