2011-06-22 52 views
3

如何使用jQuery的$.post推遲?我想:

var myFunc = function(data, textStatus, jqXHR) { 
    console.log(data); 
}; 
var post = $.post("/url/", someData); 
$.when(post).done(myFunc); 

通常

$.post("/url/", someData, function(data) { myFunc(data) }); 

工作正常(改變myFunc簽名後)。

$.when...不起作用,沒有錯誤顯示我失敗。 .done()函數到底是什麼myFunc

回答

6

jQuery ajax函數返回一個jqXHR,它本身是一個延遲對象(它實現了Promise接口)。所以不需要$.when()

對於myFunc也不需要使用命名函數表達式,正常函數聲明是好的。

function func1(data, textStatus, jqXHR) { 
    console.log('success', data); 
} 

function func2(jqXHR, textStatus) { 
    console.log('done', textStatus); 
} 

$.post('/url/', someData).success(func1).done(func2); 

演示:http://jsfiddle.net/mattball/ng7zT/


到底是什麼.done()功能突入myFunc

這是記錄在上面的jqXHR鏈接和$.post

成功回調函數傳遞返回的數據,這將是XML根元素或文本字符串,具體取決於響應的MIME類型。它也傳遞了響應的文本狀態。

從jQuery 1.5開始,成功回調函數還傳遞了一個「jqXHR」對象(在jQuery 1.4中,它傳遞了XMLHttpRequest對象)。

+0

不需要[$ .when](http://api.jquery.com/jQuery.when/),但它也不應該受到傷害。 – Tgr

+0

啊,我明白了。謝謝。 – ash