2011-06-22 8 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...が動作せず、エラーが表示されない場合があります。 myFuncに正確には.done()関数が渡されますか?

答えて

6

jQuery ajax関数は、それ自体が遅延オブジェクト(Promiseインタフェースを実装しています)であるjqXHRを返します。したがって、$.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/


が正確にmyFuncに渡す.done()機能は何ですか?

これは上記のjqXHRリンクで、また$.postにも記載されています。

成功コールバック関数には返されたデータが渡されます。返されるデータはXMLルート要素またはレスポンスのMIMEタイプに応じたテキスト文字列になります。また、応答のテキストステータスも渡されます。

jQuery 1.5以降、成功コールバック関数も "jqXHR"オブジェクト(jQuery 1.4ではXMLHttpRequestオブジェクトに渡されました)に渡されます。

+0

[$ .when](http://api.jquery.com/jQuery.when/)の必要はありませんが、傷ついてはいけません。 – Tgr

+0

ああ、そうです。ありがとう。 – ash