在实战中可能遇到的几种Ajax请求方法的详细解决方案

在实战中可能遇到的几种Ajax请求方法的详细解决方案
前言

最近在一个单节点根据速度功能页面的逻辑速度测量的上传速度,前5m数据到服务器,并返回数据记录上传时间测得的下载速度,从服务器下载1M的数据,下载和下载的成功记录,上传和下载使用AJAX是同步的避免客户带宽拥塞,和3倍的平均水平。在发展过程中,由于AJAX同步异步问题,采取了很多的曲线,特别是以前的业务逻辑整理总结。
Ajax请求方法如下所示

首先,常见的Ajax异步同步异步处理。成功后,将有数据返回值,状态请求的状态,并将XHR请求标头,但应该指出的是,并不是所有的请求头信息可以获得,例如,中心长度不可用。
$ ajax({
键入:获取
异步:真的,默认的是真实的 / /异步执行
网址,
DataType:JSON
/ / JSONP回调
成功:功能(数据、状态、XHR){
console.log(数据); / /返回值
console.log(状态); / /状态
console.log(XHR); / /目标
console.log(xhr.getresponseheader(内容类型)); / / /字节流中的应用
console.log(xhr.getresponseheader(中心长度)); / /空
}

});
二、有时遇到的业务逻辑是这样的。请求2取决于请求1的结果。请求3取决于请求2的结果。如果写回调,它会很长,有两种方法可以解决它。首先,让我们看看在ES5的解决方案。
(1)对ES5的解决方案是AJAX同步。默认Ajax是异步的,也就是说,同时执行多个请求。改变同步后,Ajax执行一个接一个,所以ajax2可以得到ajax1返回结果。
让RES1 =
让RES2 =

$ ajax({
类型:' ',
异步:假,默认是真实的 / /同步异步
网址:pars.domain + / API。phpaction = xxxdate = 2017-03-08t =+(新)GetTime(),
DataType:'json,
成功:函数(RES){
如果(res.code = = 0){
res.data RES1 =带宽{ 0 }。
其他{ }

}
}
});

$ ajax({
类型:' ',
异步:假,默认是真实的 / /同步异步
网址:pars.domain + / API。phpaction = xxxdate = 2017-03-08dom1111+RES1 + T =+(新)GetTime(),
DataType:'json,
成功:功能(RES){
如果(res.code = = 0){
RES2 = res.data带宽{ 0 }。
其他{ }

}
}
});
(2)6的溶液,然后用承诺的方法,效果相同,Ajax会按顺序执行,和Ajax会以前阿贾克斯的价值,所以代码看起来会光滑。
允许新的承诺(函数(解析,拒绝){
让URL = pars.domain + / API。phpaction =×= 2017-03-08t =+(新)GetTime()。
让ajax = $(URL,函数(RES){)
如果(res.code = = 0){
解决(资源数据);
}
别的{
}
},JSON;
console.log(请求亲成功);
});
手术成功,术后异常处理。
Pro.then(请求)
然后(requestb)。
然后(requestc)。
抓住(requesterror);

功能请求(RES){
console.log(结果的最后一步:GM+Res);
console.log(请求成功);
让新的承诺(ProA =功能(解决,拒绝){ {
让URL = pars.domain + / API。phpaction = xxxdate = 2017-03-08t =+(新)GetTime()。
让ajax = $(URL,函数(RES){)
如果(res.code = = 0){
解决(资源数据);
}
别的{
}
},JSON;
});
返回ProA
}

功能requestb(RES){
console.log(结果的最后一步:GM+Res);
console.log(请求B成功);
设概率=新的承诺(函数(解析,拒绝){

让URL = pars.domain + / API。phpaction = xxxdate = 2017-03-08t =+(新)GetTime()。
让ajax = $(URL,函数(RES){)
如果(res.code = = 0){
解决(资源数据);
}
别的{
}
},JSON;
});
返回的问题
}

功能requestc(RES){
console.log(结果的最后一步:GM+Res);
console.log(请求成功);
让新的承诺(函数(解析,拒绝){)
让URL = pars.domain + / API。phpaction = xxxdate = 2017-03-08t =+(新)GetTime()。
让ajax = $(URL,函数(RES){)
如果(res.code = = 0){
解决(资源数据);
}
别的{
}
},JSON;
});
返回过程
}

功能requesterror(){
console.log(请求失败);
}
三、JSONP跨域,动态添加一个script标签来实现跨域,注意有回调的需要与服务器协商
功能switchengineroomajax(API,statuschanged){
api;
无功statuschanged = statuschanged;
var url = API +方法= SetStatus+状态=+ statuschanged;

$ ajax({
键入:获取
网址,
DataType:JSONP
JSONP:回调 / /回调由前收到后,通过动态地添加脚本标签,完成回调
成功:函数(RES){
如果(res.code = = 0){
console.log(显示状态JSONP获取数据成功!);
}
别的{
}
}
});
};
四,同样会遇到这样的业务逻辑,ajax1 ajax2 ajax3,三异步请求,不一定是第一个返回数据,在请求成功,执行一个回调函数,需要注意的是,单独的Ajax也需要新的重要保证。
ajax1:函数(){
新承诺(函数(解析,拒绝){)
var url = / API。phpaction = xxx;
获取(URL,函数(RES){)
如果(res.code = = 0){
解决('querylog完了!);
}
别的{
}
},JSON;
});
回报承诺
},
ajax2:函数(){
新承诺(函数(解析,拒绝){)
var url = / API。phpaction = xxx;
获取(URL,函数(RES){)
如果(res.code = = 0){
解决('querygroupnodelist完了!);
}
别的{
}
},JSON;
});
回报承诺
},
ajax3:函数(){
新承诺(函数(解析,拒绝){)
var url = / API。phpaction = xxx;
获取(URL,函数(RES){)
如果(res.code = = 0){
解决('querygroupnodemaplist完了!);
}
别的{
}
},JSON;
});
回报承诺
},
initquery:函数(){
var =;
无功promiselist = { };
无功ajax1promise = myself.ajax1();
无功ajax2promise = myself.ajax2();
无功ajax3promise = myself.ajax3();

PromiseList.push(ajax1promise,ajax2promise,ajax3promise);
新的承诺(函数(解析,拒绝){
console.log('创建一个1.2秒的延迟履行承诺);
setTimeout(){()函数(
解析(1.2秒延迟承诺);
},1200);
});
PromiseList.push(P1)

promise.all(promiselist)。然后(功能(结果){)
console.log('ajax全部结束:+ json.stringify(结果)); / / 你好 {
myself.assembletabledata();
});
},
总结

以上就是本文的全部内容。希望本文的内容能给大家的学习工作带来一定的帮助。如果有任何疑问,您可以留言交流,谢谢您的支持

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部