Wie bekomme ich den jQuery.ajax Antwortstatus?

9

Gibt es eine Möglichkeit zu wissen, ob das zurückgegebene jqXHR-Objekt von einer anderen Anfrage umgeleitet wurde? Zum Beispiel mit folgendem Code:

%Vor%

Wenn die Ajax-URL mit einem 301- oder 302-Statuscode umgeleitet wird, ist die Antwort das Ergebnis der umgeleiteten Seite und gibt einen 200 (OK) Statuscode zurück. Ich denke, das ist ein Bug von jQuery (weiß nicht, ob das der beabsichtigte Beheavior ist, da die ultimative Antwort tatsächlich erfolgreich war) Ich kann die ursprünglichen Antwortheader auch nicht abrufen, um zu überprüfen, ob ein Standortheader vorhanden ist, da dies nur für umgeleitete Anforderungen verfügbar ist.

Firebug mit dem obigen Code protokolliert diese beiden Anfragen über XHR

Ссылка 302 (vorübergehend verschoben) Ссылка 200 (OK)

Aber jQuery gibt nur Daten von der zweiten Anfrage zurück.

Vielleicht gibt es eine Möglichkeit, Daten von der ersten Anfrage zu bekommen? Oder um die Antwort-URL zu erhalten und sie mit der aus der ursprünglichen Anfrage zu vergleichen?

    
Luis 02.08.2011, 03:36
quelle

2 Antworten

2

Das Problem ist, dass 301 oder 302 aufgrund der Einhaltung von Standards direkt vom Browser verarbeitet werden. Dieser Statuscode wird nicht an Ihren Ajax-Anruf weitergegeben. Die einzige Möglichkeit, dass Sie wissen, dass der Aufruf abgeschlossen wurde, befindet sich im vollständigen Handler, und darüber hinaus gibt es keinen nützlichen Status, der im jqxhr-Objekt angegeben ist, das zum Abschluss übergeben wurde. Die Success- und Error-Handler werden niemals aufgerufen.

Wir hatten einen alten Ruby-Camping-Code, der eine Umleitung zur Methode get () verwendete, als eine post () -Methode aufgerufen wurde, so dass wir eine aktualisierte Ansicht über Ruby der Ressource anzeigen konnten. Als wir zu JavaScript-Ansichten von Campingansichten wechselten, wurde das 301/302 nicht an das jqxhr-Objekt übergeben. Wir mussten die Post-Methoden neu schreiben, um 200 zurückzugeben, um das Problem zu beheben.

Hier sind einige Stackoverflow-Beiträge zum Thema.

Wie man eine Redirect-Anfrage nach der ein jQuery Ajax Anruf

Catching 302 in JavaScript gefunden

HTTP-Weiterleitung: 301 (permanent) vs. 302 (vorübergehend)

    
DRaehal 02.08.2011 22:35
quelle
0

Ein Werkzeug, das ich möglicherweise helfen könnte, ist wireshark. Es ist kostenlos und kann möglicherweise herausfinden, was mit dem jqXHR-Objekt passiert. Es ist ziemlich einfach zu benutzen, aber folge diesen Anweisungen:

Ссылка Wireshark ist ein Netzwerkprotokoll-Analysator für Unix und Windows. Ich habe bisher nur die Oberfläche mit diesem Werkzeug bereinigt, aber es ist praktisch, wenn ich eine Analyse für Anfragen zwischen Ihrem Computer und anderen im Netzwerk durchführe.

Bevor Sie beginnen - Wireshark erfasst jede Anfrage, also klicken Sie nur auf Start, wenn Sie bereit sind zu erfassen, und klicken Sie auf Stopp, wenn Sie fertig sind. - Sie benötigen Ihre IP-Adresse

Lesen Sie mehr über Analyse von HTTP-Anfragen

    
Sam Deering 02.08.2011 05:37
quelle

Tags und Links