it-swarm.com.de

jQuery Ajax - Statuscode 0?

Aus irgendeinem Grund hat meine/ Dashcode - entwickelte Anwendung das AJAXing gerade beendet und Statuscodes von 0 zurückgegeben. Ist Ihnen das passiert? Hat jemand eine Idee, warum dies passiert?

127
tarnfeld

Ein anderer Fall:

Es kann möglich sein, einen Statuscode von 0 zu erhalten, wenn Sie einen Aufruf AJAX gesendet haben und eine Aktualisierung des Browsers ausgelöst wurde, bevor Sie die Antwort AJAX erhalten. Der Anruf AJAX wird abgebrochen und Sie erhalten diesen Status.

105
mnk

In meiner Erfahrung wird der Status 0 angezeigt, wenn:

  • cross-Site-Scripting (wo der Zugriff verweigert wird)
  • anfordern einer nicht erreichbaren URL (Tippfehler, DNS-Probleme usw.)
  • die Anfrage wird sonst abgefangen (überprüfen Sie Ihren Werbeblocker)
  • wie oben, wenn die Anfrage unterbrochen ist (Browser navigiert von der Seite weg)
89
Langdon

Obwohl es wahrscheinlich nicht mit dashcode zusammenhängt, wird diese StackOverflow-Frage beim Googlen von jQuery und einem AJAX -Statuscode von 0 angezeigt. Ich dachte, ich würde eine Antwort für diejenigen geben, die dieses Problem für andere Personen ausführen Fälle. Ich bin kürzlich auf dieses Problem gestoßen und habe die folgenden Links für nützlich gehalten:

18
justkt

Gleiches Problem hier bei Verwendung von <button onclick="">submit</button>. Dann gelöst mit <input type="button" onclick="">

8
Rafi

Statuscode 0 bedeutet, dass die angeforderte URL nicht erreichbar ist. Durch das Ändern von http: // etwas/etwas in https: // etwas/etwas arbeitete ich für mich. IE gibt einen Fehler aus, der besagt, dass "Erlaubnis verweigert" wurde, wenn der Statuscode 0 ist, andere Browser nicht.

7
Jagadeesh

Es ist wichtig zu wissen, dass ajax-Aufrufe auch innerhalb einer Sitzung fehlschlagen können, die durch ein Cookie mit einer bestimmten Domäne mit dem Präfix "www" definiert wird. Wenn Sie dann Ihr PHP-Skript aufrufen, z. ohne www. Präfix in der URL, wird der Anruf und umgekehrt auch fehlschlagen. 

6
nuxxxx

Dieser Artikel hat mir geholfen. Ich übermittelte das Formular über AJAX und vergaß die Verwendung von return false (nach meiner Ajax-Anforderung), was zu einer klassischen Formularübergabe führte, aber seltsamerweise wurde es nicht abgeschlossen.

3
Martin Vseticka

"Zufällige" Formularübermittlung war genau das Problem, das ich hatte. Ich habe gerade die FORM-Tags komplett entfernt und das scheint das Problem zu beheben. Dank euch allen!

2
Insider Pro

Ich habe einen anderen Fall gefunden, in dem Jquery den Statuscode 0 angibt. Wenn XMLHttpRequest aus irgendeinem Grund nicht definiert ist, wird dieser Fehler angezeigt.

Offensichtlich geschieht dies normalerweise nicht im Web, aber ein Fehler in einem nächtlichen Firefox-Build führte dazu, dass dies in einem Add-On auftauchte, das ich gerade schrieb. :)

2
starwed

Ich hatte das gleiche Problem und es wurde vom Browser mit dem XSS-Block (Cross Site Scripting) in Zusammenhang gebracht. Ich habe es geschafft, es mit einem Server zum Laufen zu bringen.

Werfen Sie einen Blick auf: http://www.daniweb.com/web-development/javascript-dhtml-ajax/threads/282972/why-am-i-getting-xmlhttprequest.status0

2
Ricardo Rivaldo

Da dies auftaucht, wenn Sie den ajax-Status 0 googeln, wollte ich ein Trinkgeld hinterlassen, das mir Stunden verschwendete ... Ich benutzte Ajax, um einen PHP Service aufzurufen, der zufällig Phils REST-Controller für Codeigniter war (nicht sicher, ob das irgendwas damit zu tun hat oder nicht) und erhielt immer den Status 0, Readystate 0 und es hat mich verrückt gemacht. Ich debattierte es und bemerkte, wann ich es wiederholen und zurückkehren würde, anstatt die Nachricht zu beenden, dass ich Erfolg hatte. Schließlich stellte ich das Debuggen ab und versuchte es und es funktionierte. Anscheinend hat der xDebug-Debugger mit PHP irgendwie die Antwort geändert. Wenn Sie einen PHP Debugger verwenden, deaktivieren Sie ihn, um zu sehen, ob dies hilfreich ist.

2
michael

In meinem Fall wurde es verursacht, indem mein Django-Server unter http://127.0.0.1:8000/ ausgeführt wurde, der ajax-Aufruf jedoch an http://localhost:8000/ gesendet wurde. Auch wenn Sie davon ausgehen, dass sie sich unter derselben Adresse befinden, stellen Sie nicht sicher, dass Sie Ihre Anforderungen nicht an localhost senden.

1

Wir hatten ein ähnliches Problem - Statuscode 0 beim Jquery-Ajax-Anruf - und es dauerte einen ganzen Tag, um es zu diagnostizieren. Da noch niemand diesen Grund erwähnt hatte, dachte ich, ich werde ihn teilen.

In unserem Fall war das Problem der Absturz des HTTP-Servers. Ein Fehler in PHP hat Apache geblasen, daher sah es auf Client-Seite so aus:

[email protected]:~$ telnet our.server.com 80
Trying 180.153.xxx.xxx...
Connected to our.server.com.
Escape character is '^]'.
GET /test.php HTTP/1.0
Host: our.server.com

Connection closed by foreign Host.
[email protected]:~$ 

wobei test.php den abstürzenden Code enthielt . Keine vom Server zurückgegebenen Daten (nicht einmal Kopfzeilen) => Ajax-Aufruf wurde mit Status 0 abgebrochen.

1
jmper

Für mich wurde das Problem dadurch verursacht, dass das Hosting-Unternehmen (Godaddy) Vorgänge POST, die umfangreiche Antwortdaten (mehr als einige zehn Kilobyte) hatten, als eine Art Sicherheitsbedrohung behandelte. Wenn mehr als 6 dieser Fälle in einer Minute auftraten, weigerte sich der Host, den Code PHP auszuführen, der in der nächsten Minute auf die Anforderung POST antwortete. Ich bin nicht ganz sicher, was der Host stattdessen tat, aber mit tcpdump sah ich ein TCP Reset-Paket, das als Antwort auf eine POST -Anfrage vom Browser kam. Dies hat dazu geführt, dass der in einem jqXHR-Objekt zurückgegebene http-Statuscode 0 ist.

Das Ändern der Operationen von POST in GET hat das Problem behoben. Es ist nicht klar, warum Godaddy dieses Limit auferlegt, aber das Ändern des Codes war einfacher als das Ändern des Hosts.

1
emrys57

In unserem Fall wurde der Seitenlink von geändert https zu http. Obwohl die Benutzer angemeldet waren, konnten sie mit AJAX nicht geladen werden.

0
Andy In NC

In meinem Fall bekam ich dies aber nur bei Safari Mobile. Das Problem ist, dass ich die vollständige URL ( http://example.com/whatever.php ) anstelle der relativen URL (whatever.php) verwendet habe. Dies macht jedoch keinen Sinn, es kann kein XSS-Problem sein, da meine Website unter http://example.com gehostet wird. Ich vermute, Safari betrachtet den http-Teil und markiert ihn automatisch als unsichere Anforderung, ohne den Rest der URL zu untersuchen.

0
Raúl Bojalil

Ich glaube, ich weiß, was diesen Fehler verursachen kann.

In Google Chrome gibt es eine integrierte Funktion, um Ddos-Angriffe für Google Chrome-Erweiterungen zu verhindern.

Wenn ajax-Anforderungen kontinuierlich mehr als 500 Statusfehler zurückgeben, beginnt die Anforderung zu drosseln.

Daher ist es möglich, bei folgenden Anfragen den Status 0 zu erhalten.

0
Anonymous

Bei dem Versuch, den Preis aus dem dümmsten Grund für das beschriebene Problem zu gewinnen.

Vergessen, anzurufen 

xmlhttp.send(); //yes, you need this pivotal line!

Ja, ich habe immer noch Statusrückgaben von "offen" erhalten. 

0
Gordon Rouse

Bei der Fehlerbehebung habe ich festgestellt, dass AJAX xmlhttpRequest.status == 0 bedeuten kann, dass der Clientaufruf den Server noch NICHT erreicht hat, aber aufgrund eines Problems auf der Clientseite fehlgeschlagen ist. Wenn die Antwort vom Server stammt, muss der Status entweder der HTTP-Antwortcode 1xx/2xx/3xx/4xx/5xx sein. Von nun an konzentriert sich die Fehlerbehebung auf das CLIENT-Problem. Dies kann ein Ausfall der Internet-Netzwerkverbindung oder eines der von @Langdon oben beschriebenen sein.

0
Panini Luncher

Beobachten Sie die Browserkonsole, während Sie die Anforderung ausführen, wenn Sie sehen, dass "Die selbe Origin-Richtlinie das Lesen der Remote-Ressource unter http ajax nicht zuläßt Fügen Sie im Antwortheader "Access-Control-Allow-Origin" hinzu. Beispiel: In Java können Sie dies wie response.setHeader ("Access-Control-Allow-Origin", "*") festlegen, wobei die Antwort HttpServletResponse ist.

0
Mahadev Mandale

In meinem Fall würde die Einstellung von url: '' in den ajax-Einstellungen zu einem Statuscode 0 in ie8 führen. Es scheint also, dass eine solche Einstellung nicht toleriert wird.

0
blurrcat