作者plok74122 (烏嘎蝦嘎)
看板Ajax
標題Re: [問題] JQuery ajax返回值傳遞問題
時間Sun Apr 13 11:06:34 2014
大致情況是如此 因為是寫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://webptt.com/m.aspx?n=bbs/Ajax/M.1397358397.A.B63.html
※ 編輯: plok74122 (220.134.45.39), 04/13/2014 11:07:06
1F:推 qwer820404:這樣說好了…非同步不會等你呼叫的api做完事 04/13 12:11
2F:→ qwer820404:頁面不會停在那邊等 所以他會直接去執行alert那行 04/13 12:11
3F:→ qwer820404:等到 你呼叫的api成功回傳了 那個時間點也許已經過了 04/13 12:12
4F:→ qwer820404:所以alert叫出來是空的情況下 若是success的情況 04/13 12:13
5F:→ qwer820404:testoption.xAxis.categories是會有值沒錯 04/13 12:13
6F:→ qwer820404:你把asyncs設成false 那就失去非同步的功用了 04/13 12:14
7F:→ qwer820404:變成大家要等到你這次的POST完成才會繼續跑 04/13 12:14
8F:→ qwer820404:我之前是有自己把highchart寫成C# Wrapper版 04/13 12:14
9F:→ qwer820404:也跑了蠻大量的資料 是不太會跟async有關係 04/13 12:15
10F:→ danny8376:請把資料回來要做的事全寫在success的function裡 04/13 17:52