关于jquery同步和异步请求问题总结

问题

这几天做项目的时候,写脚本遇到一个问题,就是jquery异步请求和同步请求执行顺序不按代码顺序执行而是最后执行导致添加数据报错,添加到空值,这怎么忍,于是我去查找jquery api,终于知道了原来jquery默认异步请求,防止数据卡死,终于让我找到了这货async,当async: true 时,ajax请求是异步的。当async : true 时,就是同步的,但是我又有个问题,怎么设置,这个在哪设置,用$.ajax去写这个操作,不,不太麻烦了,到底怎么解决

解决方案

方案一

用$.ajax方法,可以设置请求方法 , 记得设置async 为 false 就是同步了,下面是代码案例

$.ajax({type:"GET",//请求方式url:'/address/getParentId',//请求urldata:{parentId:parentId},//请求参数dataType:'json',//返回数据类型async:false,//设为false就是同步请求cache:false,//是否缓存,默认truesuccess:function(addressList){//成功事件if(addressList&&addressList.length>0){$.each(addressList,function(index,item){array.push({id:item.id,name:item.address,});});}},error:function(XMLHttpRequest,textStatus,errorThrown){//失败事件//通常情况下textStatus和errorThown只有其中一个有值this;//theoptionsforthisajaxrequest}});

方案二

利用 $.ajaxSetup 来设置请求属性

//设置同步$.ajaxSetup({async:false});vararray=[];$.get('/address/getParentId',{parentId:parentId},function(addressList){//循环添加数据$.each(addressList,function(index,item){array.push({id:item.id,name:item.address,});});});

这样的话就ok了,请求的时候是同步了

结语

新人第一篇博文,不足之处请指出,我会改进的,谢谢


参考:JQuery.Ajax之错误调试帮助信息