1. 程式人生 > >Ajax請求成功後,獲取success中的返回的問題

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