关于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了,请求的时候是同步了
- 结语
新人第一篇博文,不足之处请指出,我会改进的,谢谢
时间: 2024-10-07 08:15:36