1

Deferreds に関する jQuery ドキュメントには、jqXHR を含む ajax 引数を返す次の例があります。

$.when( $.ajax("test.php") ).then(function(ajaxArgs){ 
    alert(ajaxArgs[1]); /* ajaxArgs is [ "success", statusText, jqXHR ] */
});

しかし、ドキュメントが間違っているようです。ajaxArgs実際には$.ajax呼び出しからの応答です。

実際の呼び出しに関するメタデータが必要なため、jqXHR オブジェクトにアクセスする必要がありますが、かなりハックなようです。これは私が現在行っていることですが、もっと良い方法が必要です (指を交差させます)。

xhr = $.ajax({
    'url': src,
}).done(function () {
    var meta = xhr.getResponseHeader(...);
});

必要な jqXHR データにアクセスするための最良/最も簡単な方法は何ですか?

4

1 に答える 1

2

3 番目の引数を使用します。

.then(function(text,status,xhr) {
   var meta = xhr.getResponseHeader(...);
});

ただし、複数の deferred を$.whenに渡す場合、ヘッダーが必要なリクエストに応じて、最初の引数の 3 番目のインデックス、2 番目、または 3 番目のインデックスになることに注意してください。

$.when( $.ajax("test.php"),$.ajax("test.php"),$.ajax("test.php") ).then(function(){ 
    var meta1 = arguments[0][2].getResponseHeader(...);
    var meta2 = arguments[1][2].getResponseHeader(...);
    var meta3 = arguments[2][2].getResponseHeader(...);
});
于 2012-05-30T21:57:40.880 に答える