Ajax请求成功后,获取success中的返回的问题

1.问题描述:在使用Ajax获取josn传过来的集合后,在success回调函数中对josn数据解析完成之后,返回的值为空









2.解决办法:设置Ajax的方法参数async为false,

默认async是true(异步请求) ,我们在这边要使用同步请求,所以改为false.




<script type="text/javascript">	
		var arr=new Array();//新建一个数组,用来保存接收的数据
	    function getTime(arr){ 
	    	$.ajax({
                type: "GET",//请求方式
                url: "${pageContext.request.contextPath}/AjaxTimeServlet",//发送请求的地址
                data: {temperature:$("#temperature").val(), time:$("#time").val()},
                dataType: "json",//预期服务器返回的类型
				async: false,//设置为同步传输
                success: function(data){
                	var i = 0;
                	$.each(data, function(key, value){//key和value分别保存的是data集合中的键和值
                		arr[i] = value;//将data集合中的值依次放进数组中
                		i=i+1;
                  });
                }
	        }); 
	        alert(arr);
	        return arr;//返回数组
	    }
	    arr = getTime(arr);
	    alert(arr[0]);
	</script>   




效果图:





但是这样修改就会出现线程安全的问题,很可能会造成整个浏览器的阻塞,不建议在主线程使用,如果一定要使用同步,放到worker线程中就不会出现同样的问题

3.参考资料:http://www.cnblogs.com/tylerdonet/p/3520862.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值