По какой-то причине при использовании AJAX (с моим дашкодразработанное приложение) браузер просто прекращает загрузку и возвращает коды состояния 0
. Почему так происходит?
ajax
http-status-codes
Tarnfeld
источник
источник
<form onsubmit="return false;">
e.preventDefault();
По моему опыту, вы увидите статус 0, когда:
источник
Та же проблема здесь при использовании
<button onclick="">submit</button>
. Затем решается с помощью<input type="button" onclick="">
источник
Код состояния 0 означает, что запрошенный URL недоступен. Изменив http: // something / something на https: // something / something, у меня сработало. IE выдает сообщение об ошибке «разрешение отклонено», когда код состояния равен 0, другие браузеры этого не делают.
источник
Важно отметить, что вызовы ajax могут завершаться ошибкой даже в рамках сеанса, который определяется файлом cookie с определенным доменом с префиксом www. Когда вы затем вызываете свой php-скрипт, например, без www. префикс в URL-адресе, вызов не будет выполнен, и наоборот.
источник
Эта статья мне помогла. Я отправлял форму через AJAX и забыл использовать
return false
(после моего запроса ajax), что привело к отправке классической формы, но, как ни странно, она не была завершена.источник
<form onsubmit="return false;">
сделали свое дело.Поскольку это появляется, когда вы google ajax status 0, я хотел оставить совет, который просто занял у меня несколько часов потраченного впустую времени ... Я использовал ajax для вызова службы PHP, которая оказалась REST_Controller Фила для Codeigniter (не уверен, что это ничего общего с этим или нет) и продолжал получать статус 0, состояние готовности 0, и это сводило меня с ума. Я отлаживал его и заметил, что когда я повторял эхо и возвращался вместо выхода из сообщения, я получал успех. Наконец я выключил отладку и попробовал, и это сработало. Похоже, отладчик xDebug с PHP каким-то образом изменял ответ. Если вы используете отладчик PHP, попробуйте выключить его, чтобы узнать, поможет ли это.
источник
Я нашел еще один случай, когда jquery дает код статуса 0 - если по какой-то причине XMLHttpRequest не определен, вы получите эту ошибку.
Очевидно, что обычно этого не происходит в Интернете, но ошибка в ночной сборке Firefox привела к тому, что это возникло в надстройке, которую я писал. :)
источник
jQuery.ajax()
объектом XHR. Запрос даже не был создан при вызове AJAX, по-прежнему получение f.open - это не функция и код состояния 0. Причина: я возвращал$.ajaxSettings.xhr
объект из$.ajaxSetup({xhr})
, возвращениеnew window.XMLHttpRequest();
вместо этого решило проблемуУ меня была такая же проблема, и она была связана с блокировкой XSS (межсайтовый скриптинг) браузером. Мне удалось заставить его работать с помощью сервера.
Взгляните на: http://www.daniweb.com/web-development/javascript-dhtml-ajax/threads/282972/why-am-i-getting-xmlhttprequest.status0
источник
«Случайная» отправка формы была именно той проблемой, с которой я столкнулся. Я просто полностью удалил теги FORM и, похоже, решил проблему. Спасибо всем!
источник
У нас была аналогичная проблема - код состояния 0 при вызове jquery ajax - и нам потребовался целый день, чтобы диагностировать ее. Поскольку об этой причине еще никто не упомянул, подумал, что поделюсь.
В нашем случае проблема заключалась в падении HTTP-сервера. Некоторая ошибка в PHP выдувала Apache, поэтому на стороне клиента это выглядело так:
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:~$
где test.php содержал код сбоя. С сервера не возвращаются данные (даже заголовки) => вызов ajax был прерван со статусом 0.
источник
В моем случае это было вызвано запуском моего сервера django,
http://127.0.0.1:8000/
но отправкой вызова ajax вhttp://localhost:8000/
. Даже если вы ожидаете, что они будут отображаться на один и тот же адрес, они этого не делают, поэтому убедитесь, что вы не отправляете свои запросы на localhost.источник
В нашем случае ссылка на страницу была изменена с https на http . Несмотря на то, что пользователи вошли в систему, им не удалось загрузить с помощью AJAX.
источник
В моем случае установка
url: ''
в настройках ajax привела бы к коду статуса 0 в ie8 .. Кажется, что ie просто не допускает такой настройки.источник
Для меня проблема была вызвана тем, что хостинговая компания (Godaddy) рассматривала операции POST, которые содержали значительные данные ответа (не более десятков килобайт), как своего рода угрозу безопасности. Если за одну минуту произошло более 6 из них, хост отказывался выполнять код PHP, который ответил на запрос POST в течение следующей минуты. Я не совсем уверен, что хост сделал вместо этого, но я видел, с tcpdump, пакет сброса TCP, приходящий в качестве ответа на запрос POST из браузера. Это привело к тому, что код состояния http, возвращаемый в объекте jqXHR, был равен 0.
Изменение операций с POST на GET устранило проблему. Непонятно, почему Godaddy устанавливает это ограничение, но изменить код было проще, чем изменить хост.
источник
Думаю, я знаю, что может вызвать эту ошибку.
В google chrome есть встроенная функция для предотвращения ddos-атак для расширений google chrome.
Когда запросы ajax постоянно возвращают более 500 ошибок статуса, он начинает регулировать запросы.
Следовательно, можно получить статус 0 по следующим запросам.
источник
В попытке выиграть приз по самой глупой причине описанной проблемы.
Забыв позвонить
xmlhttp.send(); //yes, you need this pivotal line!
Да, я все еще получал нулевой статус при вызове open.
источник
В моем случае я получал это, но только в Safari Mobile. Проблема в том, что я использовал полный URL ( http://example.com/whatever.php ) вместо относительного (something.php). Это не имеет никакого смысла, это не может быть проблемой XSS, потому что мой сайт размещен на http://example.com . Я предполагаю, что Safari смотрит на http-часть и автоматически помечает ее как небезопасный запрос, не проверяя остальную часть URL-адреса.
источник
При устранении неполадок я обнаружил, что этот AJAX xmlhttpRequest.status == 0 может означать, что клиентский вызов еще НЕ достиг сервера, но не удалось из-за проблемы на стороне клиента. Если ответ был от сервера, то статус должен быть либо с кодом ответа HTTP 1xx / 2xx / 3xx / 4xx / 5xx. Отныне устранение неполадок будет сосредоточено на проблеме КЛИЕНТА, и это может быть отключение сетевого подключения к Интернету или одно из тех, что описаны @Langdon выше.
источник
Наблюдайте за консолью браузера при выполнении запроса, если вы видите, что «Политика того же происхождения запрещает чтение удаленного ресурса по http ajax ..... причина: заголовок cors 'access-control-allow-origin' отсутствует», то вам необходимо добавьте в заголовок ответа «Access-Control-Allow-Origin». exa: в java вы можете установить это как response.setHeader ("Access-Control-Allow-Origin", "*"), где ответ HttpServletResponse.
источник