AJAX封装 – 写给自己但是不想封装
普通封装
function ajax(method,url,params,callback,isAsync){
let xhr =new XMLHttpRequest();
let urlAndParms = url;
if(method.toLowerCase()=="get"){
urlAndParms += "?"+params ;
}
xhr.open(method,urlAndParms,isAsync);
xhr.onreadystatechange = function(){
if(xhr.readyState==4 && xhr.status==200){
callback(xhr.responseText);
}
}
if(method.toLowerCase()=="get"){
xhr.send();
}else{
xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
xhr.send(params);
}
}
对象封装
function ajaxObj(obj){
let defaultObj = {
method:"get",
url:"#",
params:"",
isAsync:true,
callback:null
};
for(let key in defaultObj){
if(!obj[key]){
obj[key] = defaultObj[key];
}
}
let xhr =new XMLHttpRequest();
let urlAndParms = obj.url;
if(obj.method.toLowerCase()=="get"){
urlAndParms += "?"+obj.params ;
}
xhr.open(obj.method,urlAndParms,obj.isAsync);
xhr.onreadystatechange = function(){
if(xhr.readyState==4 && xhr.status==200){
obj.callback(xhr.responseText);
}
}
if(obj.method.toLowerCase()=="get"){
xhr.send();
}else{
xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
xhr.send(obj.params);
}
}
回调promise封装AJAX
function ajaxObjAndPromise(obj){
let defaultObj = {
method:"get",
url:"#",
params:"",
isAsync:true
};
for(let key in defaultObj){
if(!obj[key]){
obj[key] = defaultObj[key];
}
}
let xhr =new XMLHttpRequest();
let urlAndParms = obj.url;
if(obj.method.toLowerCase()=="get"){
urlAndParms += "?"+obj.params ;
}
xhr.open(obj.method,urlAndParms,obj.isAsync);
let p = new Promise(function(resolve,reject){
xhr.onreadystatechange = function(){
if(xhr.readyState==4){
if(xhr.status==200){
resolve(xhr.responseText);
}else{
reject("服务器错了");
}
}
}
});
if(obj.method.toLowerCase()=="get"){
xhr.send();
}else{
xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
xhr.send(obj.params);
}
return p;
}