ajax同步请求的处理办法
2017-11-01 15:02
316 查看
ajax请求通常以异步的形式发起的,但如果有两个请求A、B,B需在A成功返回时才进行,该怎么写?个人实践出个办法,看代码:
init方法发同步请求,play方法里调用init,如果init正确返回才发起另一个ajax请求,重点在于init同步请求并抛异常,play捕获异常。
var ws = { //ajax是对jquery的ajax作薄层封装,以简化代码 //uri:请求链接 //method: 请求方法 //token: 身价凭证,可忽略 //data: 发送的数据 //async: true表示异步请求,false为同步请求 //callback: 回调处理 ajax:function(uri,method,token,data,async,callback){ $.ajax({ url: uri, type: method || 'GET', data: data, async: async, beforeSend:function(xhr){ if(!token){ return; } xhr.setRequestHeader('Authorization', 'Bearer '+token); }, success: function(data) { data = JSON.parse(data); if(callback !=null && typeof callback == 'function'){ callback(data);//特殊处理 }else{//通用处理 if(data.status_code == '200'){ alert("成功"); }else{ alert(data.msg); } } } }); }, init:function(){//请求A var data = { //你的数据 ... }; var url="你的url"; var flag = true;//标识返回结果是否正常 this.ajax(url,'POST',null,data,false,function(data){ if(data.status_code != '200'){//未能正确返回数据 alert(data.msg); flag = false; return; } }); if(!flag){ throw new Error("初始化失败");//未能正确返回数据就抛异常,关键地方 } }, play:function(){//请求B //如果init有异常就不执行请求 try{ this.init(); }catch(error){ return; } var url = '你的url'; var data = { //你的数据 ... }; this.ajax(url,'POST',null,data,true,null); } //其他方法已省略 };
init方法发同步请求,play方法里调用init,如果init正确返回才发起另一个ajax请求,重点在于init同步请求并抛异常,play捕获异常。
相关文章推荐
- Ajax发送同步请求给Spring,通过controller处理完成后如何返回响应
- session失效时间设置、过期处理、ajax同步异步请求处理
- Struts2 拦截器处理同步(普通Http)请求和异步(post,ajax)请求时拦截配置
- 三级联动时ajax的同步请求和异步请求处理
- ajax同步设置后但是一直无效问题处理
- FireFox下Ajax同步请求onReadyStateChange不执行问题解决
- .NET2.0项目Ajax请求处理
- 如何ASP.NET Core Razor中处理Ajax请求
- [三卷天书]ajax请求时接收到乱码的处理方案
- Jquery中Ajax/Post同步和异步请求
- b2cf .net mvc Angular2项目 ajax请求返回结果异常处理
- 在ie中关于ajax请求获得数据缓存问题的解决办法
- FireFox下Ajax同步请求onReadyStateChange不执行问题解决
- ajax请求之后,后台代码没有处理,浏览器控制台都没有报错,状态码变成302的原因
- jquery中ajax请求过程显示正在处理的图片
- ajax同步请求和异步请求的差异
- ajax提交异步,同步请求不同
- Session超时或无效,处理ajax请求
- js 的encodeURIComponent() 处理ajax请求url中的 “+ ? ; = @ $ #”等等特殊字符
- ajax异步请求,session超时处理