Risposte:
Un altro caso:
Potrebbe essere possibile ottenere un codice di stato 0se è stata inviata una chiamata AJAX ed è stato attivato un aggiornamento del browser prima di ottenere la risposta AJAX . La chiamata AJAX verrà annullata e verrà visualizzato questo stato.
<form onsubmit="return false;">
e.preventDefault();
Nella mia esperienza, vedrai uno stato di 0 quando:
Lo stesso problema qui durante l'utilizzo <button onclick="">submit</button>. Quindi risolto utilizzando<input type="button" onclick="">
Il codice di stato 0 indica che l'URL richiesto non è raggiungibile. Modificando http: // qualcosa / qualcosa in https: // qualcosa / qualcosa ha funzionato per me. IE genera un errore che dice "permesso negato" quando il codice di stato è 0, altri browser no.
Questo articolo mi ha aiutato. Stavo inviando il modulo tramite AJAX e ho dimenticato di utilizzare return false(dopo la mia richiesta Ajax) che ha portato alla presentazione del modulo classico ma stranamente non è stato completato.
<form onsubmit="return false;">ha fatto il trucco.
Perché questo si presenta quando google ajax status 0 Volevo lasciare qualche suggerimento che mi ha portato solo ore di tempo sprecato ... Stavo usando Ajax per chiamare un servizio PHP che è successo essere REST_Controller di Phil per Codeigniter (non sono sicuro che questo abbia qualcosa a che fare con esso o meno) e continuava a ottenere lo stato 0, pronto 0 e mi stava facendo impazzire. Lo stavo eseguendo il debug e ho notato quando avrei echeggiato e restituito invece di uscire dal messaggio avrei avuto successo. Alla fine ho disattivato il debug e provato e ha funzionato. Sembra che il debugger xDebug con PHP stesse in qualche modo modificando la risposta. Se stai usando un debugger PHP prova a disattivarlo per vedere se questo aiuta.
Ho trovato un altro caso in cui jquery ti dà il codice di stato 0 - se per qualche ragione XMLHttpRequest non è definito, otterrai questo errore.
Ovviamente questo non accadrà normalmente sul web, ma un bug in una build di firefox notturna ha causato la sua comparsa in un componente aggiuntivo che stavo scrivendo. :)
jQuery.ajax()l'oggetto XHR. La richiesta non è stata nemmeno creata su una chiamata AJAX, sempre ottenere f.open non è una funzione e un codice di stato 0. Causato da: stavo restituendo l' $.ajaxSettings.xhroggetto da $.ajaxSetup({xhr}), restituendo new window.XMLHttpRequest();invece risolto il problema
Ho avuto lo stesso problema ed era correlato al blocco XSS (cross site scripting) dal browser. Sono riuscito a farlo funzionare usando un server.
Dai un'occhiata a: http://www.daniweb.com/web-development/javascript-dhtml-ajax/threads/282972/why-am-i-getting-xmlhttprequest.status0
L'invio di moduli "accidentali" era esattamente il problema che stavo avendo. Ho appena rimosso del tutto i tag FORM e questo sembra risolvere il problema. Grazie a tutti!
Abbiamo riscontrato un problema simile - codice di stato 0 alla chiamata ajax jquery - e ci è voluta un'intera giornata per diagnosticare. Dato che nessuno aveva ancora menzionato questo motivo, ho pensato di condividere.
Nel nostro caso il problema era l'arresto anomalo del server HTTP. Alcuni bug in PHP stavano soffiando su Apache, quindi sul lato client sembrava così:
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:~$
dove test.php conteneva il codice di crash. Nessun dato restituito dal server (nemmeno le intestazioni) => la chiamata ajax è stata interrotta con lo stato 0.
Nel mio caso, è stato causato eseguendo il mio server Django http://127.0.0.1:8000/ma inviando la chiamata Ajax http://localhost:8000/. Anche se ti aspetteresti che mappino allo stesso indirizzo, non si assicurano che non stai inviando le tue richieste a localhost.
Nel nostro caso, il collegamento alla pagina è stato modificato da https a http . Anche se gli utenti hanno effettuato l'accesso, è stato impedito il caricamento con AJAX.
Per me, il problema è stato causato dalla società di hosting (Godaddy) che tratta le operazioni POST che avevano dati di risposta sostanziali (qualcosa di più di decine di kilobyte) come una sorta di minaccia alla sicurezza. Se più di 6 di questi si sono verificati in un minuto, l'host ha rifiutato di eseguire il codice PHP che ha risposto alla richiesta POST durante il minuto successivo. Non sono del tutto sicuro di cosa abbia fatto invece l'host, ma ho visto, con tcpdump, un pacchetto di ripristino TCP in arrivo come risposta a una richiesta POST dal browser. Ciò ha comportato che il codice di stato http restituito in un oggetto jqXHR fosse 0.
La modifica delle operazioni da POST a GET ha risolto il problema. Non è chiaro perché Godaddy imponga questo limite, ma cambiare il codice è stato più semplice che cambiare l'host.
Penso di sapere cosa potrebbe causare questo errore.
In Google Chrome è presente una funzionalità integrata per prevenire attacchi ddos per le estensioni di Google Chrome.
Quando le richieste Ajax restituiscono continuamente più di 500 errori di stato, iniziano a limitare le richieste.
Quindi è possibile ricevere lo stato 0 sulle seguenti richieste.
Nel tentativo di vincere il premio per la ragione più stupida del problema descritto.
Dimenticare di chiamare
xmlhttp.send(); //yes, you need this pivotal line!
Sì, stavo ancora ottenendo ritorni di stato pari a zero dalla chiamata "aperta".
Nel mio caso, stavo ottenendo questo, ma solo su Safari Mobile. Il problema è che stavo usando l'URL completo ( http://example.com/whatever.php ) invece di quello relativo (whatever.php). Questo non ha alcun senso però, non può essere un problema XSS perché il mio sito è ospitato su http://example.com . Immagino che Safari guardi la parte http e la contrassegni automaticamente come una richiesta non sicura senza ispezionare il resto dell'URL.
Nella mia risoluzione dei problemi, ho scoperto che AJAX xmlhttpRequest.status == 0 potrebbe significare che la chiamata client NON ha ancora raggiunto il server, ma non è riuscita a causa di un problema sul lato client. Se la risposta proveniva dal server, lo stato deve essere il codice di risposta HTTP 1xx / 2xx / 3xx / 4xx / 5xx. D'ora in poi, la risoluzione dei problemi si concentrerà sul problema del CLIENTE e potrebbe essere la connessione alla rete Internet inattiva o una di quelle descritte da @Langdon sopra.
Osservare la console del browser mentre si effettua la richiesta, se viene visualizzato il messaggio "La stessa politica di origine non consente la lettura della risorsa remota su http ajax ..... motivo: mancante l'intestazione cors" access-control-allow-origin "mancante", è necessario aggiungi "Access-Control-Allow-Origin" nell'intestazione della risposta. exa: in Java è possibile impostare questo come response.setHeader ("Access-Control-Allow-Origin", "*") dove la risposta è HttpServletResponse.