/*ajax({url:"请求路径",type:"请求方式 type和method遇新是直朋能到 一样使用",dataType:"返回数据的类型 默认是text",cache:"是否走缓存",data:"请求的参数,如果是get请求,会将这里的内容拼接到url",async:是否异步,success:成功的回调,error:失败的时候的回调,complete:不管成功失败都会触发的函数})支持的参数url,method/type,data,dataType,async,cache,success*/~function() {
classAjax{
init(){
letxhr=newXMLHttpRequest();
xhr.onreadystatechange= () =>{
新直能分支调二浏页器朋代说 if(!/^[23]\d{2}$/i.test(xhr.status))return;
新直能分支调二浏页器朋代说 if(xhr.readyState==4){
新直能分支调二浏页器朋代说 letresult=xhr.responseText;
新直能分支调二浏页器朋代说 //对参数dataType新直能分支调二浏页器朋代说try{
享器哈班其础件事是架考发求关通互面待需了 新直能分支调二浏页器朋代说 是能览调不页新代些事几求事都时学下是事功过 switch(this.dataType.toUpperCase()){
享器哈班其础件事是架考发求关通互面待需了 新直能分支调二浏页器朋代说 是能览调不页新代些事几求事都时学下是事功过 case"TEXT":
享器哈班其础件事是架考发求关通互面待需了 新直能分支调二浏页器朋代说 是能览调不页新代些事几求事都时学下是事功过 新直能分支调二浏页器朋代说 break;
享器哈班其础件事是架考发求关通互面待需了 新直能分支调二浏页器朋代说 是能览调不页新代些事几求事都时学下是事功过 case"HTML":
享器哈班其础件事是架考发求关通互面待需了 新直能分支调二浏页器朋代说 是能览调不页新代些事几求事都时学下是事功过 新直能分支调二浏页器朋代说 break;
享器哈班其础件事是架考发求关通互面待需了 新直能分支调二浏页器朋代说 是能览调不页新代些事几求事都时学下是事功过 case"JSON":
享器哈班其础件事是架考发求关通互面待需了 新直能分支调二浏页器朋代说 是能览调不页新代些事几求事都时学下是事功过 新直能分支调二浏页器朋代说 result=JSON.parse(result);
享器哈班其础件事是架考发求关通互面待需了 新直能分支调二浏页器朋代说 是能览调不页新代些事几求事都时学下是事功过 新直能分支调二浏页器朋代说 break;
享器哈班其础件事是架考发求关通互面待需了 新直能分支调二浏页器朋代说 是能览调不页新代些事几求事都时学下是事功过 case"XML":
享器哈班其础件事是架考发求关通互面待需了 新直能分支调二浏页器朋代说 是能览调不页新代些事几求事都时学下是事功过 新直能分支调二浏页器朋代说 result=xhr.responseXML;
享器哈班其础件事是架考发求关通互面待需了 新直能分支调二浏页器朋代说 是能览调不页新代些事几求事都时学下是事功过 新直能分支调二浏页器朋代说 break;
享器哈班其础件事是架考发求关通互面待需了 新直能分支调二浏页器朋代说 是能览调不页新代些事几求事都时学下是事功过 }
新直能分支调二浏页器朋代说 }catch(e){
享器哈班其础件事是架考发求关通互面待需了 新直能分支调二浏页器朋代说 是能览调不页新代些事几求事都时学下是事功过 console.log(e);
新直能分支调二浏页器朋代说 }
新直能分支调二浏页器朋代说 this.success(result);
新直能分支调二浏页器朋代说 }
};
//处理dataif(this.data!==null){
新直能分支调二浏页器朋代说 this.query();
新直能分支调二浏页器朋代说 if(this.isGet){
新直能分支调二浏页器朋代说 //get请求需要将数据data拼接到url上新直能分支调二浏页器朋代说this.url+=this.queryBefore()+this.data;
新直能分支调二浏页器朋代说 //this.data没有用了就清空了新直能分支调二浏页器朋代说this.data=null;
新直能分支调二浏页器朋代说 }
}
//cache处理 只有get请求才有必要处理缓存this.isGet?this.cacheFn():null;
xhr.open(this.method,this.url,this.async);
xhr.send(this.data);
}
query(){
//判断data必须是一个对象的时候去讲其变成字符串if(this.data&&this.data.toString()=="[object Object]"){
新直能分支调二浏页器朋代说 letstr=``;
新直能分支调二浏页器朋代说 for(letkeyin this.data){
新直能分支调二浏页器朋代说 if(this.data.hasOwnProperty(key)){
享器哈班其础件事是架考发求关通互面待需了 新直能分支调二浏页器朋代说 是能览调不页新代些事几求事都时学下是事功过 str+=`${key}=${this.data[key]}&`;
新直能分支调二浏页器朋代说 }
新直能分支调二浏页器朋代说 }
新直能分支调二浏页器朋代说 //后面多一个&符号新直能分支调二浏页器朋代说str=str.replace(/&$/g,"");
新直能分支调二浏页器朋代说 this.data=str;
}
}
queryBefore(){
//判断url有没有?return遇新是直朋能到 this.url.includes("?")?"&":"?";
}
cacheFn(){
//判断this.cache是true还是false 只有false时候才处理缓存,加一个时间戳!this.cache?this.url+=`${this.queryBefore()}_t=${(newDate).getTime()}`:null;
}
}
window.ajax=function({
享器哈班其础件事是架考发求关通互面待需了 新直能分支调二浏页器朋代说 是能览调不页新代些事几求事都时学下是事功过 url=null,
享器哈班其础件事是架考发求关通互面待需了 新直能分支调二浏页器朋代说 是能览调不页新代些事几求事都时学下是事功过 method="GET",
享器哈班其础件事是架考发求关通互面待需了 新直能分支调二浏页器朋代说 是能览调不页新代些事几求事都时学下是事功过 type=null,
享器哈班其础件事是架考发求关通互面待需了 新直能分支调二浏页器朋代说 是能览调不页新代些事几求事都时学下是事功过 data=null,
享器哈班其础件事是架考发求关通互面待需了 新直能分支调二浏页器朋代说 是能览调不页新代些事几求事都时学下是事功过 dataType="JSON",
享器哈班其础件事是架考发求关通互面待需了 新直能分支调二浏页器朋代说 是能览调不页新代些事几求事都时学下是事功过 async=true,
享器哈班其础件事是架考发求关通互面待需了 新直能分支调二浏页器朋代说 是能览调不页新代些事几求事都时学下是事功过 cache=true,
享器哈班其础件事是架考发求关通互面待需了 新直能分支调二浏页器朋代说 是能览调不页新代些事几求事都时学下是事功过 success=null,
享器哈班其础件事是架考发求关通互面待需了 新直能分支调二浏页器朋代说 是能览调不页新代些事几求事都时学下是事功过 } = {}) {
let_this=newAjax();
["url","method","data","dataType","async","cache","success"].forEach((item)=>{
if(item=="method"){
新直能分支调二浏页器朋代说 _this.method=type==null?method:type;
新直能分支调二浏页器朋代说 return;
}
if(item=="success"){
新直能分支调二浏页器朋代说 _this.success=typeofsuccess=="function"?success:newFunction();
新直能分支调二浏页器朋代说 return;
}
_this.isGet=/^GET|DELETE|HEAD$/i.test(_this.method);
_this[item]=eval(item);
});
_this.init();
return遇新是直朋能到_this;
}
}();