2016-09-25 177 views
0

我想從完成的jQuery Ajax調用中返回一個值。但是,我並沒有收到JSON數據,而是收到「未定義」的信息。我如何修改我的代碼來獲取JSON數據而不是未定義?jQuery Ajax返回值

function callback(data) { 
    return data; 
} 

var xv = jQuery.ajax({ 
    url: 'http://www.domain.com/json.php', 
    dataType: 'json', 
    success: function(data) { 
     alert('Success.'); // This is alerted. 
    }, 
    error: function(data) { 
     alert('File could not be processed.'); // This is not alerted. 
    }, 
    complete: function(data) { 
     callback(data); 
    } 
}); 

console.log(callback()); // Getting "undefined" here instead of data. 
+3

我不明白,你打電話'callback'不帶參數的'data'當然是不確定的。 –

+0

此外,'complete'處理程序的第一個參數是'jqXHR',而不是數據。數據僅作爲第一個參數傳遞給'success'。 – GSerg

+0

默認情況下,AJAX是異步的,只有當你得到它時,你纔有你的數據,這就是你的「成功」回調。進行「同步」調用,或在成功功能中使用您的數據。 – skobaljic

回答

0

你實際上並沒有在任何地方存儲data。你要做的就是反射回無論是給你的,就像斯特林說

我會修改它,像這樣:

var globalData; 
function(callback){ 
    globalData = data; 
} 

然後console.log(globalData),你可以看到結果

2

AJAX是異步的默認情況下,只有當你收到數據時纔有你的數據,這是你成功的回調。進行同步呼叫,或在您的成功功能中使用您的數據。

你的代碼看起來應該是這樣,而不是:

​​
+0

賓果。就是這樣!謝謝你的幫助。 :) –