Pour une raison quelconque, mon dashcode application développée vient de quitter AJAXing et renvoie des codes de statut de 0. Cela vous est-il arrivé? Quelqu'un at-il une idée pourquoi cela se produit?
Un autre cas:
Il pourrait être possible d'obtenir un code d'état de 0
si vous avez envoyé un appel AJAX et qu'un rafraîchissement du navigateur a été déclenché avant d'obtenir la réponse AJAX . L'appel AJAX sera annulé et vous obtiendrez cet état.
D'après mon expérience, vous verrez l'état 0 lorsque:
Bien que cela ne soit probablement pas lié à dashcode , cette question de StackOverflow se pose lorsque googler jQuery et un code de statut AJAX égal à 0, alors j’ai pensé donner une réponse à ceux qui se heurtent à ce problème pour d’autres. cas. J'ai récemment rencontré ce problème et j'ai trouvé les liens suivants utiles:
Même problème ici en utilisant <button onclick="">submit</button>
. Puis résolu en utilisant <input type="button" onclick="">
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 a généré une erreur indiquant "autorisation refusée" lorsque le code d'état est 0, mais 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 ensuite votre script php, par exemple sans le www. préfixe dans l'URL, l'appel échouera et vice-versa.
Cet article m'a aidé. Je soumettais le formulaire via AJAX et j'avais oublié d'utiliser return false
(après ma demande ajax), ce qui conduisait à la soumission d'un formulaire classique, mais étrangement, il n'était pas terminé.
La soumission de formulaire "accidentelle" était exactement le problème que j'avais. Je viens de supprimer complètement les balises FORM et cela semble résoudre le problème. Merci tout le monde!
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 version nocturne de firefox l'a fait apparaître dans un add-on que j'écrivais. :)
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 en utilisant un serveur.
Jetez un oeil à: http://www.daniweb.com/web-development/javascript-dhtml-ajax/threads/282972/why-am-i-getting-xmlhttprequest.status0
Parce que cela apparaît lorsque vous recherchez le statut ajax 0 dans Google. Je voulais laisser une astuce qui me prenait juste des heures de temps perdu ... J'utilisais ajax pour appeler un service PHP qui se trouvait être le contrôleur REST_ de Phil pour Codeigniter (non bien sûr si cela a quelque chose à voir avec cela ou pas) et continue à obtenir le statut 0, relire 0 et il me rendait fou. J'étais en train de le déboguer et j'ai remarqué que quand j'allais faire écho et retourner au lieu de quitter le message, j'aurais du succès. Enfin, j'ai désactivé le débogage, essayé et cela a fonctionné. Il semble que le débogueur xDebug avec PHP était en train de modifier la réponse. Si vous utilisez un débogueur PHP, essayez de le désactiver pour voir si cela vous aide.
Dans mon cas, cela était dû à l'exécution de mon serveur Django sous http://127.0.0.1:8000/
mais à l'envoi de l'appel ajax à http://localhost:8000/
. Même si vous vous attendez à ce qu'ils correspondent à la même adresse, ils ne s'assurent pas que vous n'envoyiez pas vos demandes à localhost.
Nous avions un problème similaire - code d’état 0 sur jquery ajax call - et il nous a fallu toute une journée pour le diagnostiquer. Comme personne n'avait encore mentionné cette raison, je pensais partager.
Dans notre cas, le problème était un crash du serveur HTTP. Un bug dans PHP soufflait dans Apache, ainsi, côté 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 bloquant . 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 causé par la société d’hébergement (Godaddy) qui traitait les opérations POST pour lesquelles des données de réponse substantielles (plus de quelques dizaines de kilo-octets) constituaient une sorte de menace à la 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 ayant répondu à la demande 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 demande POST du navigateur. Le code d’état http renvoyé dans un objet jqXHR était donc 0.
Le passage des opérations de POST à GET a résolu le problème. Pourquoi GoDaddy impose-t-il cette limite, mais changer le code était plus facile que de changer l'hôte.
Dans notre cas, le lien de page a été changé de https à http. Même si les utilisateurs étaient connectés, ils ne pouvaient pas charger avec AJAX.
Dans mon cas, je l’obtenais, mais seulement sur Safari Mobile. Le problème est que j'utilisais l'URL complète ( http://example.com/witely.php ) à la place de la valeur relative (what.php). Cela n'a aucun sens cependant, cela ne peut pas être un problème XSS car mon site est hébergé sur http://example.com . J'imagine que Safari examine la partie http et la marque automatiquement comme une demande non sécurisée sans inspecter le reste de l'URL.
Je pense savoir ce qui peut causer cette erreur.
Dans Google Chrome, une fonctionnalité intégrée empêche les attaques DDOS pour les extensions Google Chrome.
Lorsque les demandes ajax renvoient en permanence plus de 500 erreurs d’état, elles commencent à limiter les demandes.
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 du problème décrit.
Oublier d'appeler
xmlhttp.send(); //yes, you need this pivotal line!
Oui, je recevais toujours le statut zéro de l'appel "ouvert".
Lors de mon dépannage, j'ai trouvé que AJAX xmlhttpRequest.status == 0 pouvait signifier que l'appel du client n'avait PAS encore atteint le serveur, mais échouait à cause d'un problème côté client. Si la réponse provenait du serveur, l'état doit être soit le code de réponse HTTP 1xx/2xx/3xx/4xx/5xx. Désormais, le dépannage doit être axé sur le problème du client. Il peut s’agir d’une connexion Internet interrompue ou de l’une de celles décrites par @Langdon ci-dessus.
Observez la console du navigateur tout en faisant la demande. Si vous voyez "La même règle d'origine interdit de lire la ressource distante à l'adresse http ajax ..... raison: en-tête cors" accès-contrôle-autoriser-origine "manquant", vous devez ajoutez "Access-Control-Allow-Origin" dans l'en-tête de la réponse. exa: en Java, vous pouvez définir ceci comme response.setHeader ("Access-Control-Allow-Origin", "*") où la réponse est HttpServletResponse.
Dans mon cas, définir url: ''
dans les paramètres ajax donnerait un code de statut 0 dans ie8 .. Il semble que le système ne tolère tout simplement pas un tel paramètre.