2017-02-08 9 views
1

Ich habe zwei Ajax-Aufrufe, die einige Rückruf nach beiden jQuery.when()jQuery.when: Holen Sie sich das xhr Statuscode

$.when(loadDataA(), loadDataB()).done(function(dataA, dataB) { 
    console.log(xhr.status); // How do I get the xhr.status? 
} 

ich die xhr.status des ersten Anrufs wissen wollen, verwenden erhalten abgeschlossen ausführt. Mit dem normalen .done() können Sie so etwas wie:

.done(function(data, statusText, xhr) { 
    console.log(xhr.status); 
} 

Aber ich kann es nicht in meinem Fall zu arbeiten.

Wie bekomme ich es bei der Verwendung jQuery.when?

+0

, wenn Sie mehrere xhr Anfrage haben, müssen Sie – madalinivascu

+0

ich so dachte, mehrere Statistiken haben. Hast du ein Beispiel dafür, wie das geht? – dmferrari

+0

Wenn es keine integrierte Funktionalität dafür gibt (habe keine gefunden), würde ich versuchen, loadDataA und B ein Objekt zurückzugeben, das den xhr-Status mit den Daten enthält. Sie könnten es dann von dataA und dataB retreive .. nur eine Idee – Kaddath

Antwort

1

Aus der Dokumentation für $.when():

Im Fall wurde ohne Wert aufgelöst ein latenten, wird das entsprechende doneCallback Argument undefiniert. Wenn ein Deferred zu einem einzelnen Wert aufgelöst wird, wird das entsprechende Argument diesen Wert enthalten. In dem Fall, in dem eine verzögerte Auflösung zu mehreren Werten aufgelöst wird, ist das entsprechende Argument ein Array dieser Werte . Zum Beispiel:

var d1 = $.Deferred(); 
var d2 = $.Deferred(); 
var d3 = $.Deferred(); 

$.when(d1, d2, d3).done(function (v1, v2, v3) { 
    console.log(v1); // v1 is undefined 
    console.log(v2); // v2 is "abc" 
    console.log(v3); // v3 is an array [ 1, 2, 3, 4, 5 ] 
}); 

d1.resolve(); 
d2.resolve("abc"); 
d3.resolve(1, 2, 3, 4, 5); 

In Ihrem Fall dataA wird ein Array mit drei Elementen sein:

dataA[0] -> data 
dataA[1] -> statusText 
dataA[2] -> xhr 

Mit diesem ...

Wie kann ich es bekommen, wenn jQuery verwenden. wann?

dataA[2].status

Verwandte Themen