Ajax請求成功後,獲取success中的返回的問題
阿新 • • 發佈:2019-01-26
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執行緒中就不會出現同樣的問題