Z jakiegoś powodu podczas korzystania z AJAX (z my dashcodeopracowana aplikacja) przeglądarka po prostu przestaje ładować i zwraca kody statusu 0
. Dlaczego to się dzieje?
ajax
http-status-codes
tarnfeld
źródło
źródło
<form onsubmit="return false;">
e.preventDefault();
Z mojego doświadczenia wynika, że stan 0 będzie widoczny, gdy:
źródło
Ten sam problem podczas używania
<button onclick="">submit</button>
. Następnie rozwiązano za pomocą<input type="button" onclick="">
źródło
Kod stanu 0 oznacza, że żądany adres URL jest nieosiągalny. Zmieniając http: // coś / coś na https: // coś / coś działało dla mnie. IE zgłasza błąd mówiąc „Odmowa uprawnień”, gdy kod stanu to 0, inne przeglądarki nie.
źródło
Należy zauważyć, że wywołania ajax mogą się nie udać nawet w ramach sesji, która jest definiowana przez plik cookie z określoną domeną poprzedzoną przedrostkiem www. Kiedy następnie wywołasz swój skrypt php, np. Bez www. prefiks w adresie URL, wywołanie zakończy się niepowodzeniem i na odwrót.
źródło
Ten artykuł mi pomógł. Wysyłałem formularz przez AJAX i zapomniałem go użyć
return false
(po moim żądaniu Ajax), co doprowadziło do przesłania klasycznego formularza, ale o dziwo nie zostało ukończone.źródło
<form onsubmit="return false;">
załatwił sprawę.Ponieważ to pokazuje się, kiedy google ajax status 0 Chciałem zostawić wskazówkę, która zajęła mi wiele godzin zmarnowanego czasu ... Używałem Ajax do wywołania usługi PHP, która była REST_Controller Phila dla Codeigniter (nie jestem pewien, czy to ma z tym coś wspólnego, czy nie) i ciągle otrzymywałem status 0, readystate 0 i doprowadzało mnie to do szału. Debugowałem go i zauważyłem, że gdy powtarzam i zwracam zamiast zamknąć komunikat, otrzymam sukces. W końcu wyłączyłem debugowanie i spróbowałem i zadziałało. Wygląda na to, że debugger xDebug w PHP w jakiś sposób modyfikował odpowiedź. Jeśli używasz debugera PHP, spróbuj go wyłączyć, aby zobaczyć, czy to pomaga.
źródło
Znalazłem inny przypadek, w którym jquery podaje kod statusu 0 - jeśli z jakiegoś powodu XMLHttpRequest nie jest zdefiniowany, otrzymasz ten błąd.
Oczywiście nie zdarza się to normalnie w Internecie, ale błąd w nocnej kompilacji Firefoksa spowodował, że pojawił się w dodatku, który pisałem. :)
źródło
jQuery.ajax()
obiektem XHR. Żądanie nie zostało nawet utworzone przy wywołaniu AJAX, nadal otrzymywanie f.open nie jest funkcją i kodem stanu 0. Przyczyna:$.ajaxSettings.xhr
$.ajaxSetup({xhr})
new window.XMLHttpRequest();
Miałem ten sam problem i był on związany z blokowaniem XSS (cross site scripting) przez przeglądarkę. Udało mi się to zrobić przy użyciu serwera.
Spójrz na: http://www.daniweb.com/web-development/javascript-dhtml-ajax/threads/282972/why-am-i-getting-xmlhttprequest.status0
źródło
„Przypadkowe” przesłanie formularza było dokładnie tym problemem, który miałem. Właśnie całkowicie usunąłem tagi FORM i wydaje się, że rozwiązuje to problem. Dziękuję wszystkim!
źródło
Mieliśmy podobny problem - kod statusu 0 w wywołaniu jquery ajax - i zdiagnozowanie go zajęło nam cały dzień. Ponieważ nikt jeszcze nie wspomniał o tym powodzie, pomyślałem, że się nim podzielę.
W naszym przypadku problemem była awaria serwera HTTP. Jakiś błąd w PHP zepsuł Apache, więc po stronie klienta wyglądało to tak:
gdzie test.php zawierał kod powodujący awarię. Żadne dane nie zostały zwrócone z serwera (nawet nagłówki) => połączenie ajax zostało przerwane ze statusem 0.
źródło
W moim przypadku było to spowodowane uruchomieniem mojego serwera django,
http://127.0.0.1:8000/
ale wysłaniem wywołania Ajax dohttp://localhost:8000/
. Nawet jeśli spodziewasz się, że będą mapować na ten sam adres, nie upewniają się więc, że nie wysyłasz żądań do lokalnego hosta.źródło
W naszym przypadku link do strony został zmieniony z https na http . Mimo że użytkownicy byli zalogowani, uniemożliwiono im ładowanie za pomocą AJAX.
źródło
W moim przypadku ustawienie
url: ''
w ustawieniach ajax spowodowałoby kod stanu 0 w ie8 .. Wygląda na to, że po prostu nie toleruje takiego ustawienia.źródło
Dla mnie problem był spowodowany przez firmę hostingową (GoDaddy), która traktuje operacje POST, które miały znaczące dane odpowiedzi (więcej niż dziesiątki kilobajtów), jako rodzaj zagrożenia bezpieczeństwa. Jeśli więcej niż 6 z nich wystąpiło w ciągu jednej minuty, host odmówił wykonania kodu PHP, który odpowiedział na żądanie POST w ciągu następnej minuty. Nie jestem do końca pewien, co zrobił host zamiast tego, ale widziałem, z tcpdump, pakiet resetowania TCP przychodzący jako odpowiedź na żądanie POST z przeglądarki. Spowodowało to, że kod stanu http zwrócony w obiekcie jqXHR był równy 0.
Zmiana operacji z POST na GET rozwiązała problem. Nie jest jasne, dlaczego GoDaddy nakłada ten limit, ale zmiana kodu była łatwiejsza niż zmiana hosta.
źródło
Chyba wiem, co może spowodować ten błąd.
W Google Chrome jest wbudowana funkcja, która zapobiega atakom DDos na rozszerzenia Google Chrome.
Gdy żądania AJAX stale zwracają błędy statusu 500+, zaczyna ograniczać żądania.
Stąd możliwe jest otrzymanie statusu 0 przy kolejnych żądaniach.
źródło
Próbując wygrać nagrodę z najgłupszego powodu opisanego problemu.
Zapominanie o telefonie
Tak, nadal otrzymywałem zerowe statusy w wywołaniu „open”.
źródło
W moim przypadku otrzymywałem to, ale tylko w Safari Mobile. Problem w tym, że użyłem pełnego adresu URL ( http://example.com/cokolwiek.php ) zamiast względnego (cokolwiek.php). Nie ma to jednak sensu, nie może to być problem z XSS, ponieważ moja witryna jest hostowana pod adresem http://example.com . Wydaje mi się, że Safari sprawdza część http i automatycznie oznacza ją jako niezabezpieczone żądanie bez sprawdzania pozostałej części adresu URL.
źródło
Podczas rozwiązywania problemów stwierdziłem, że ten xmlhttpRequest.status AJAX == 0 może oznaczać, że połączenie klienta NIE dotarło jeszcze do serwera, ale nie udało się z powodu problemu po stronie klienta. Jeśli odpowiedź pochodzi z serwera, stan musi mieć postać kodu odpowiedzi HTTP 1xx / 2xx / 3xx / 4xx / 5xx. Odtąd rozwiązywanie problemów powinno koncentrować się na problemie KLIENTA i może spowodować przerwanie połączenia internetowego lub jedno z opisanych przez @ Langdon powyżej.
źródło
Obserwuj konsolę przeglądarki podczas wysyłania żądania, jeśli widzisz komunikat „Te same zasady pochodzenia nie pozwalają na odczytywanie zdalnego zasobu pod adresem http ajax ..... powód: brak nagłówka cors„ access-control-allow-origin ””, to musisz dodaj „Access-Control-Allow-Origin” w nagłówku odpowiedzi. exa: w java możesz ustawić to jak response.setHeader ("Access-Control-Allow-Origin", "*"), gdzie odpowiedzią jest HttpServletResponse.
źródło