Promise封装原生ajax
function ajax(method, url, data) {
/*兼容IE*/
var request;
if (window.XMLHttpRequest) {
request = new XMLHttpRequest();
} else {
request = new ActiveXObject("Microsoft.XMLHTTP")
}
return new Promise(function (resolve, reject) {
request.onreadystatechange = function () {
if (request.readyState === 4) {
if (request.status === 200) {
resolve((request.response));//JSON.parse
} else {
reject(request.status);
}
}
};
var arr = [];
for (var key in data) {
arr.push(key + '=' + data[key]);
}
var getData = arr.join("&");
if (method.toUpperCase() === "GET") {
request.open("GET", url + "?" + getData, true);
request.send(null);
} else if (method.toUpperCase() === "POST") {
request.open("POST", url, true);
request.responseType = "json";
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');
request.send(getData);
}
});
};
//用法
ajax('get', 'https://').then(res => {
console.log(res)
});
ajax('post', 'https://').then(res => {
console.log(res)
});