readState的值的含义:
0初始化请求-1发送请求-2接收数据-3解析数据-4完成
function ajax(obj){
obj.type = obj.type || 'get';
obj.data = obj.data || null;
obj.async = obj.async || true;
let xhr = null;
if(window.XMLHttpRequest){
//非IE
xhr = new XMLHttpRequest();
} else {
//IE
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
if(obj.type === 'post'){
xhr.open(obj.type,obj.url,obj.async);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
const data = toData(obj.data);
xhr.send(data);
} else {
xhr.open(obj.type,obj.url+'?'+toData(obj.data),obj.async);
xhr.send();
}
xhr.onreadstatechange = function(){
if(xhr.readState === 4 && xhr.status === 200){
if(obj.success){
obj.success(JSON.parse(xhr.responseText));
}
} else {
if(obj.error){
obj.error(xht.status);
}
}
}
}
function toData(obj){
if(obj === null){
return obj;
}
const res = [];
for(let i in obj){
let str = i + '=' + obj[i];
res.push(str);
}
return res.join('&');
}