Jquery ajaxrequest xhr.status code 0, sondern den html-status-code 200
Dies ist nicht eine cross-site-request-problem wie die meisten gegoogelt Antworten auf meine Fragen aus.
Ich bin immer xhr.status 0 och xhr.statusText "error" beim Versuch, eine ajax-Anfrage mit jquery-Funktionen .Holen Sie sich und .Last. In Firebug wenn die angeforderte Seite geladen wird, die mit html-status-code-200, ich kann den text in der Antwort und der Antwort-header ok ist.
Mein code:
function GetProjectTask(e) {
var loader = $('#' + e + 'tasks div.loader');
var content = $('#' + e + 'tasks div.content');
var img = $('#' + e + 'tasks img.collapseimg');
if (loader.html() == null || loader.html().trim() == '') {
if (content.html() == null || content.html() == '') {
img.attr('src', 'images/expanded.gif');
loader.html('<img src="images/loading.gif" alt="Wait..."> Loading support tasks');
content.load('includes/my' + e + 'tasks.php',
function (response, status, xhr) {
if (status == "error") {
var msg = "Sorry but there was an error: ";
alert(msg + xhr.status + " - " + xhr.statusText);
}
}
);
return;
}
}
content.empty();
loader.empty();
img.attr('src', 'images/collapsed.gif');
}
Server: IIS-v. 7.5
Jquery: v1.6.2
Irgendwelche Ideen?
Haben Sie versucht, laden Alternative Ressourcen? Wie eine statische html-Datei zum Beispiel. Was ist der Inhalt, die Art deiner Antwort von deinem php-Datei?
Yup und yup. Der Inhalt meiner Antwortdatei ist reines html.
Versucht, zu aktualisieren, jquery auf die neueste version, obwohl ich zweifelte, dass es wichtig sein würde. Und das problem bleibt.
Sorry nicht das markup in Ihrem Dokument bu response-header ContentType - was haben Sie, wenn Sie Ihre php-Skript antwortet?
Content-type ist text/html
Yup und yup. Der Inhalt meiner Antwortdatei ist reines html.
Versucht, zu aktualisieren, jquery auf die neueste version, obwohl ich zweifelte, dass es wichtig sein würde. Und das problem bleibt.
Sorry nicht das markup in Ihrem Dokument bu response-header ContentType - was haben Sie, wenn Sie Ihre php-Skript antwortet?
Content-type ist text/html
InformationsquelleAutor moiran | 2012-01-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube Statuscode null könnte bedeuten, viele Dinge. In meinem Fall war ich der Empfang der status-code von null zu einem Benutzer verlassen die Seite, bevor der request-response-Zyklus vollenden konnte. Sie können auch den status-code von null, wenn die Kommunikation mit dem server ist fehlgeschlagen. Ich habe im Grunde fasst dies als Fehler im out-bound-Kommunikation vom sender. Das wäre, warum es kommt auch mit cross-site-requests und anderen Gründen ist der Umgang mit der client-Seite.
Den W3 XMLHttpRequest-Spezifikation Abschnitt 4.8.1 Staaten:
Wenn ich lese die Spezifikation korrekt, nicht gesendeten und GEÖFFNETEN Zustände die Anfrage kann im Vorfeld gesendet. Und das error-flag wird gesetzt, wenn:
Ich habe ein problem mit dieser status-code ist, wenn eine Anforderung vom Benutzer abgebrochen von der Navigation Weg, ich denke nicht, dass dies ein Fehler, da es sich um eine absichtliche Aktion des Benutzers. Netzwerk-Probleme ich halte einen Fehler. Zum Beispiel, wenn der Benutzer ruft eine Aktion, die Ergebnisse in einem ajax-request, der hat einen Fehler-handler zu leiten Sie Sie auf eine Fehler-Seite. Wenn der Benutzer zum verlassen der aktuellen Seite, also Abbruch der Anfrage, die von einem usability-Sicht, macht es keinen Sinn, Sie umzuleiten, um die Fehler-Seite. Die Implementierung der Spezifikation ist in Ordnung, außer, dass ich noch nicht zu bestimmen, eine Methode, zu wissen, dass ein status-code von null kam aus einer abgebrochenen Anfrage oder aus irgendeinem anderen Grund. Wenn ich in der Lage, um zu bestimmen, den Unterschied, ich wäre in der Lage, geeignete Maßnahmen zu ergreifen.
EDIT: 03/18/2014
Antwort auf Kommentar von @ariera am Aug 9 2013, ich bin die Versorgung der grobe Beschreibung von dem, was die Abhilfe war. Das problem ist jedoch, dass es schon einige Zeit her, dass ich dieses Problem gelöst, und meine Erinnerung ist vage.
Wenn ich mich richtig erinnere, mit der Idee um die Feststellung, ob der status-code 0 wurde durch den Benutzer indirekt den Abbruch der Anfrage war es, die code für die Fehlerbehandlung in seiner eigenen callback-getrennt von der Fehler-callback. Dann im Fehler-callback, die Sie überprüfen, um zu sehen, ob der status-code ist null. Wenn es ist, rufen Sie Ihren Fehler Rückruf in einer timeout-Verzögerung, sonst rufen Sie Ihre Fehler-callback. Die Idee hier ist, dass, wenn der Fehlercode null ist, dann setzen Sie eine Verzögerung in der Behandlung dieses Fehlers kann der browser tatsächlich die navigation. So dass der browser zum ausführen der navigation sollte klar ausführen von JavaScript und somit der Fehler-handler nicht ausgelöst.
Nun, dies ist ein Schlamassel, und kann nicht sogar arbeiten, als nochmal, ich weiß es nicht wirklich die Feinheiten der Fragen, aber ich hoffe, es führt jemand anderes sich den richtigen Weg finden.
+1 von mir. Dies hat mir geholfen, zu finden mein problem. Wie bereits erwähnt war ich mit der Navigation zu einer anderen Seite, bevor die Antwort des asynchronen Aufruf kommt. Ich habe verschwendet fast einen Tag, um das Thema und vielen Dank für die Hilfe.
ja @loesak, für all das gute und schöne in der Welt, können Sie Ihre Lösung? 0: )
leider habe ich nicht mehr Arbeit in der Firma, wo ich das Problem behoben. Es ist auch schon einige Jahre her, so meine Erinnerung ist etwas vage. Ich werde Bearbeiten Sie meine Antwort auf eine Zusammenfassung.
InformationsquelleAutor loesak
Response status-code 0, verursacht wurde (in meinem Fall, während ich die Entwicklung einer website) durch xhr-Anfragen von der Seite serviert von meinem lokalen server auf dem gleichen server auf localhost.
Anderen Grund (und mögliche Lösungen) finden sich hier:
"Stellen Sie sicher, dass Sie relative URLs zu verwenden, die für Ihre AJAX-Anfragen." -
ungültige HTTP-Antwort-code '0'
Die localhost Teil meiner Antwort war hier entscheidend - vielleicht entwickeln Sie auf Ihrem lokalen Rechner und dem server gibt es auch). In meinem Fall, das war ein Problem, und ich hatte zur Behandlung der status-code 0 als 200 für, solange ich mich der Entwicklung auf der lokalen Maschine. Sobald ich die bereitgestellte Anwendung auf dem remote-server-Antwort-code die zuvor "kaputt" ajax requests wieder normal war (200).
Aha! Leider besteht das problem sowohl auf meinem lokalen ATM und auf dem deployment-server.
InformationsquelleAutor WTK