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线程中就不会出现同样的问题