2013-11-01 140 views
-4

我是使用JQuery的新手,並且遇到了這行代碼的問題。

function getById(id, callback) 
{ 
    return $.get(url, {}, callback); 
} 

當我看什麼.get返回它不是一個XML節點或JSON這是我認爲它應該返回。相反,我得到一個包含方法和原型集合的對象。它也有一個就緒狀態。所以它沒有返回undefined,但它也沒有返回我所期望的。問題是什麼?

我試着把get賦給一個變量,但是沒有做任何事情我也嘗試過使用回調函數,但我並不真正瞭解如何使用它來分配從get返回的變量的數據。

+2

簡答:AJAX中的「A」代表「異步」。這意味着'.get()'函數*在AJAX調用*完成*之前返回*。 AJAX調用的結果將在'callback'函數中可用。長答案:這個問題被重複*很多次*。看到上面提到的問題。 – David

回答

0

這被稱爲promise

它允許您使用異步操作的最終結果。
調用then()方法,並在響應到達時傳遞迴調以運行代碼。
這將返回該代碼結果的新承諾。

+0

所以在這個例子中,從getByID響應,你可以調用呢? var test = getByID(1); test.then(function(res){console.log(res)}) – uptownhr

0

它返回XMLHttpRequest。由於AJAX是異步的,你不能只返回$.get方法。

所以你需要使用你的回調方法:

$.get(url, {}, function(data) { 
    console.log('data'); 
}); 
1

$.ajax()函數返回一個jqXHR對象。從ajax調用返回的數據將傳遞給您的回調,或傳遞給jqXHR對象的done回調。

我會推薦閱讀學習網站的$.ajax() documentationajax category