jquery的同步异步问题
做一个瀑布流照片墙效果的时候出现的问题。通过jquery的post方法调用php url,根据返回的json数据循环生成html代码。在给str变量赋值的时候,发现在post匿名函数里alert str有值,在post匿名函数外打印没值。
代码如下:
var str = ''; $.post(base_url+'/index.php/pic/ajaxGetPic/',{cat_id:1,page:1},function(data) { var obj = eval("("+data+")"); if(obj.length == 0) { alert("没有数据了!"); }else { $.each(obj,function(key,val) { str += '<div class="cell"><img src="'+val['pic_path']+'" /><p>'+val['pic_id']+'</p></div>'; }); } alert(str); }); alert(str);
经朋友提醒,是因为ajax同步异步的问题,也就是post中的内容尚未执行完毕,就已经往下开始执行了。所以会出现这种情况。
解决方法:
var str = ''; var cat_id = $('#id').val(); $.ajax({ type:"POST", url:base_url+'/index.php/pic/ajaxGetPic/', data:{cat_id:cat_id,page:index+1}, async:false, dataType:"json", success:function(data){ if(data.length == 0) { alert("没有数据了!"); }else { $.each(data,function(key,val) { str += '<div class="cell"><img src="'+val['pic_path']+'" /><p>'+val['pic_id']+'</p></div>'; }); } } });
使用jquery的ajax方法,其中async设置为false则同步,true则异步。
相关推荐
Guanjs0 2020-11-09
wmsjlihuan 2020-09-15
shishengsoft 2020-09-15
poplpsure 2020-08-17
CyborgLin 2020-08-15
Richardxx 2020-07-26
sunnyhappy0 2020-07-26
knightwatch 2020-07-19
wcqwcq 2020-07-04
chichichi0 2020-06-16
YAruli 2020-06-13
JF0 2020-06-13
84423067 2020-06-12
心丨悦 2020-06-11
zkwgpp 2020-06-04
stoneechogx 2020-06-04
litterfrog 2020-05-30
today0 2020-05-26