十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
关于jquery同步和异步请求问题总结
创新互联服务项目包括龙海网站建设、龙海网站制作、龙海网页制作以及龙海网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,龙海网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到龙海省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
问题
这几天做项目的时候,写脚本遇到一个问题,就是jquery异步请求和同步请求执行顺序不按代码顺序执行而是最后执行导致添加数据报错,添加到空值,这怎么忍,于是我去查找jquery api,终于知道了原来jquery默认异步请求,防止数据卡死,终于让我找到了这货 async,当async: true 时,ajax请求是异步的。当async : true 时,就是同步的,但是我又有个问题,怎么设置,这个在哪设置,用$.ajax去写这个操作,不,不太麻烦了,到底怎么解决
解决方案
方案一
用$.ajax方法,可以设置请求方法 , 记得设置 async 为 false 就是同步了,下面是代码案例
$.ajax({ type : "GET",//请求方式 url : '/address/getParentId',//请求url data : {parentId : parentId},//请求参数 dataType : 'json',//返回数据类型 async : false, //设为false就是同步请求 cache : false,//是否缓存,默认true success : 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; // the options for this ajax request } });
方案二
利用 $.ajaxSetup 来设置请求属性
//设置同步 $.ajaxSetup({ async : false }); var array = []; $.get('/address/getParentId',{parentId : parentId},function(addressList){ //循环添加数据 $.each(addressList, function(index, item){ array.push({ id : item.id, name : item.address, }); }); });
这样的话就ok了,请求的时候是同步了
结语
新人第一篇博文,不足之处请指出,我会改进的,谢谢
参考:JQuery.Ajax之错误调试帮助信息