封装一个promise的异步请求
let ajax = function(options) {
function formatParams(obj) {
var arr = [];
for (var attr in obj) {
arr.push(encodeURIComponent(attr) + '=' + encodeURIComponent(obj[attr]))
}
arr.push('t=' + new Date().getTime())
return arr.join('&');
}
return new Promise((resolve, reject) => {
if (window.XMLHttpRequest) {
var xhr = new XMLHttpRequest();
} else {
var xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
if (options.type.toLowerCase() == 'get') {
xhr.open('get', options.url + '?' + formatParams(options.data), true);
} else if (options.toLowerCase() == 'post') {
xhr.open('get', optinos.url, true);
xhr.setRequestHeader('content-type', 'applaction/json');
}
xhr.send(options.data);
xhr.onreadystatechange = function() {
if (xhr.readyState != 4) return;
if (xhr.readyState == 4 && xhr.status == 200) {
resolve(xhr.responseText);
} else {
reject('服务器异常')
}
}
})
}