Pour une raison quelconque, mon application développée par dashcode vient d’arrêter AJAXing et renvoie les codes d’état 0. Cela vous est-il arrivé? Est-ce que quelqu’un a une idée de ce qui se passe?
Un autre cas:
Il est possible d’obtenir un code d’état de 0
si vous avez envoyé un appel AJAX et qu’une actualisation du navigateur a été déclenchée avant d’obtenir la réponse AJAX . L’appel AJAX sera annulé et vous obtiendrez cet état.
Dans mon expérience, vous verrez un statut de 0 lorsque:
Bien qu’elle ne soit probablement pas liée à dashcode , cette question StackOverflow survient lors de la recherche sur jQuery et d’un code d’état AJAX de 0, alors j’ai pensé apporter une réponse à ceux qui rencontraient ce problème pour d’autres cas. J’ai récemment rencontré ce problème et trouvé les liens suivants utiles:
Même problème en utilisant . Puis résolu en utilisant
Le code d’état 0 signifie que l’URL demandée n’est pas accessible. En changeant http: // quelque chose / quelque chose en https: // quelque chose / quelque chose a fonctionné pour moi. IE affiche une erreur disant “permission refusée” lorsque le code d’état est 0, les autres navigateurs ne le font pas.
Il est important de noter que les appels ajax peuvent échouer même dans une session définie par un cookie avec un certain domaine préfixé par www. Lorsque vous appelez alors votre script php, par exemple sans le www. préfixe dans l’URL, l’appel échouera et vice versa, aussi.
Cet article m’a aidé. Je soumettais un formulaire via AJAX et j’ai oublié d’utiliser return false
(après ma requête ajax), ce qui a conduit à une soumission de formulaire classique mais étrangement, elle n’était pas terminée.
Parce que cela se voit lorsque vous avez un statut 0 ajax sur Google, je voulais laisser quelques astuces qui me prenaient des heures de temps perdu… J’utilisais ajax pour appeler un service PHP qui était le REST_Controller de Code pour Signet de Phil (pas sûr que cela ait quoi que ce soit à voir avec ou non) et continuait à obtenir le statut 0, readystate 0 et ça me rendait fou. Je l’ai débogué et j’ai remarqué que je ferais écho et que je reviendrais au lieu de quitter le message. Finalement, j’ai désactivé le débogage et essayé et ça a fonctionné. Il semblerait que le débogueur de xDebug avec PHP modifie en quelque sorte la réponse. Si vous utilisez un débogueur PHP, essayez de le désactiver pour voir si cela vous aide.
J’ai trouvé un autre cas où jquery vous donne le code d’état 0 – si pour une raison quelconque, XMLHttpRequest n’est pas défini, vous obtiendrez cette erreur.
Évidemment, cela ne se produira normalement pas sur le Web, mais un bogue dans une compilation firefox nocturne a provoqué l’apparition d’un add-on que j’écrivais. 🙂
La soumission de formulaire “accidentelle” était exactement le problème que je rencontrais. Je viens de supprimer les balises FORM et cela semble résoudre le problème. Merci tout le monde!
J’ai eu le même problème, et il était lié au blocage XSS (cross site scripting) par le navigateur. J’ai réussi à le faire fonctionner avec un serveur.
Jetez un oeil à: http://www.daniweb.com/web-development/javascript-dhtml-ajax/threads/282972/why-am-i-getting-xmlhttprequest.status0
Nous avons eu le même problème – le code de statut 0 sur l’appel jquery ajax – et cela nous a pris toute la journée pour le diagnostiquer. Puisque personne n’avait encore mentionné cette raison, je pensais que je partagerais.
Dans notre cas, le problème était le blocage du serveur HTTP. Un bogue de PHP faisait exploser Apache, donc à la fin du client, cela ressemblait à ceci:
mirek@toccata:~$ 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. mirek@toccata:~$
où test.php contenait le code en panne. Aucune donnée renvoyée par le serveur (pas même les en-têtes) => l’appel ajax a été abandonné avec le statut 0.
Pour moi, le problème était dû au fait que la société d’hébergement (Godaddy) traitait les opérations POST qui contenaient des données de réponse substantielles (plus de dizaines de kilo-octets) en tant que menace de sécurité. Si plus de 6 d’entre eux se sont produits en une minute, l’hôte a refusé d’exécuter le code PHP qui a répondu à la requête POST au cours de la minute suivante. Je ne suis pas tout à fait sûr de ce que l’hôte a fait à la place, mais j’ai vu, avec tcpdump, un paquet de réinitialisation TCP venant en réponse à une requête POST du navigateur. Cela a provoqué le code d’état HTTP renvoyé dans un object jqXHR à être 0.
La modification des opérations de POST à GET a résolu le problème. Il n’est pas clair pourquoi Godaddy impose cette limite, mais changer le code était plus facile que de changer l’hôte.
Dans mon cas, cela a été causé par l’exécution de mon serveur django sous http://127.0.0.1:8000/
mais en envoyant l’appel ajax à http://localhost:8000/
. Même si vous vous attendez à ce qu’ils correspondent à la même adresse, assurez-vous de ne pas envoyer vos demandes à localhost.
Dans mon cas, définir url: ''
dans les parameters ajax donnerait un code d’état 0 à ie8.
Je pense que je sais ce qui peut causer cette erreur.
Dans Google Chrome, il existe une fonctionnalité intégrée pour empêcher les attaques de ddos pour les extensions Google Chrome.
Lorsque les requêtes ajax renvoient en permanence plus de 500 erreurs d’état, elles commencent à limiter les requêtes.
Il est donc possible de recevoir le statut 0 sur les demandes suivantes.
Dans une tentative de gagner le prix pour la raison la plus stupide pour le problème décrit.
Oublier d’appeler
xmlhttp.send(); //yes, you need this pivotal line!
Oui, je continuais à obtenir des retours de statut de zéro à partir de l’appel “ouvert”.
Dans notre cas, le lien de la page est passé de https à http . Même si les utilisateurs étaient connectés, ils ne pouvaient pas être chargés avec AJAX.