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则异步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值