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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Java_jfei/article/details/70226629

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

没有更多推荐了,返回首页