Re: [問題] JQuery ajax返回值傳遞問題

看板Ajax作者 (烏嘎蝦嘎)時間10年前 (2014/04/13 11:06), 10年前編輯推噓1(109)
留言10則, 2人參與, 最新討論串2/3 (看更多)
大致情況是如此 因為是寫PHP開始的 所以javascript的詳細運作並不是非常的清晰 分享一下我這次測試的情況是如此的 <script> $(document).ready(function(){ var highchartsoption={...略...}; $.post("wang_ajax.php", { name:'A', }, function(data,status){ alert(data);------>這出來的值會是正確的 var tags = $.parseJSON(data); highchartsoption.xAxis.categories=tags; }); alert(highchartsoption.xAxis.categories);--->這個情況下他會是空的 }); </script> 這個情況下當下我就覺得是返回值傳遞失敗 不過後來發現 下面的圖形劃出來 依然是正確的 表示值有進去 後來改成 <script> $.ajax({ type: "POST", url: "wang_ajax.php", data:{name:"A"}, async:false, success:function(data,status){ alert(data);------>正確 var tags = $.parseJSON(data); testoption.xAxis.categories=tags; }}); alert(testoption.xAxis.categories);-------->正確 </script> 所以才會覺得跟async有關係 後來有查詢一下 目前評估上應該是需要補上async:false 避免同步進行的時候如果查詢延遲圖畫出來會有東西消失 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.45.39 ※ 文章網址: http://www.ptt.cc/bbs/Ajax/M.1397358397.A.B63.html ※ 編輯: plok74122 (220.134.45.39), 04/13/2014 11:07:06

04/13 12:11, , 1F
這樣說好了…非同步不會等你呼叫的api做完事
04/13 12:11, 1F

04/13 12:11, , 2F
頁面不會停在那邊等 所以他會直接去執行alert那行
04/13 12:11, 2F

04/13 12:12, , 3F
等到 你呼叫的api成功回傳了 那個時間點也許已經過了
04/13 12:12, 3F

04/13 12:13, , 4F
所以alert叫出來是空的情況下 若是success的情況
04/13 12:13, 4F

04/13 12:13, , 5F
testoption.xAxis.categories是會有值沒錯
04/13 12:13, 5F

04/13 12:14, , 6F
你把asyncs設成false 那就失去非同步的功用了
04/13 12:14, 6F

04/13 12:14, , 7F
變成大家要等到你這次的POST完成才會繼續跑
04/13 12:14, 7F

04/13 12:14, , 8F
我之前是有自己把highchart寫成C# Wrapper版
04/13 12:14, 8F

04/13 12:15, , 9F
也跑了蠻大量的資料 是不太會跟async有關係
04/13 12:15, 9F

04/13 17:52, , 10F
請把資料回來要做的事全寫在success的function裡
04/13 17:52, 10F
文章代碼(AID): #1JIVyzjZ (Ajax)
文章代碼(AID): #1JIVyzjZ (Ajax)