JQuery Ajax - код статуса 0? - PullRequest
       36

JQuery Ajax - код статуса 0?

131 голосов
/ 04 января 2010

По какой-то причине мое разработанное приложение только что остановило AJAXing и возвращает коды состояния 0. Это случилось с вами? У кого-нибудь есть идея, почему это происходит?

Ответы [ 21 ]

2 голосов
/ 08 февраля 2012

Потому что это появляется, когда вы гуглируете ajax-статус. 0 Я хотел оставить несколько советов, которые занимали у меня часы потерянного времени ... Я использовал ajax для вызова службы PHP, которая оказалась REST_Controller Фила для Codeigniter (не уверен Если это имеет какое-либо отношение к этому или нет) и продолжал получать статус 0, готовность 0, и это сводило меня с ума. Я отлаживал его и заметил, что когда я получу эхо и вернусь, вместо того чтобы выйти из сообщения, я получу успех. Наконец я выключил отладку и попробовал, и это сработало. Кажется, отладчик xDebug с PHP как-то модифицировал ответ. Если вы используете отладчик PHP, попробуйте отключить его, чтобы посмотреть, поможет ли это.

1 голос
/ 17 декабря 2013

У нас была похожая проблема - код состояния 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.

1 голос
/ 18 декабря 2014

В моем случае это было вызвано тем, что мой сервер django работал под http://127.0.0.1:8000/, но отправлял вызов ajax на http://localhost:8000/. Даже если вы ожидаете, что они будут отображаться на один и тот же адрес, они не будут уверены, что вы не отправляете свои запросы на localhost.

1 голос
/ 31 июля 2014

Для меня проблема была вызвана тем, что хостинговая компания (Godaddy) рассматривала операции POST, которые содержали существенные ответные данные (больше, чем десятки килобайт), как своего рода угрозу безопасности.Если более 6 из них произошло за одну минуту, хост отказался выполнять код PHP, который ответил на запрос POST в течение следующей минуты.Я не совсем уверен, что сделал хост вместо этого, но я видел, с tcpdump, пакет сброса TCP, приходящий как ответ на запрос POST от браузера.Это привело к тому, что код состояния http, возвращаемый в объекте jqXHR, был равен 0.

Смена операций с POST на GET устранила проблему.Непонятно, почему Godaddy установил этот предел, но изменить код было проще, чем сменить хост.

0 голосов
/ 05 апреля 2019

При поиске и устранении неисправностей я обнаружил, что этот AJAX xmlhttpRequest.status == 0 может означать, что клиентский вызов еще не достиг сервера, но произошел сбой из-за проблемы на стороне клиента. Если ответ был с сервера, то статус должен быть таким: 1xx / 2xx / 3xx / 4xx / 5xx HTTP Response code. Отныне устранение неполадок должно быть сосредоточено на проблеме КЛИЕНТА и может быть связано с отсутствием подключения к сети Интернет или одним из описанных @Langdon выше.

0 голосов
/ 26 декабря 2018

В моем случае я получал это, но только на Safari Mobile. Проблема в том, что я использовал полный URL (http://example.com/whatever.php) вместо относительного (what.php). Это не имеет никакого смысла, хотя это не может быть проблемой XSS, поскольку мой сайт размещен на http://example.com. Я предполагаю, что Safari просматривает часть http и автоматически помечает ее как небезопасный запрос, не просматривая остальную часть URL.

0 голосов
/ 13 сентября 2018

Наблюдайте за консолью браузера во время выполнения запроса, если вы видите «Политика одного источника запрещает чтение удаленного ресурса по адресу http ajax ..... причина: отсутствует заголовок cors« access-control-allow-origin »затем» вам нужно добавить «Access-Control-Allow-Origin» в заголовок ответа. exa: в java вы можете установить это как response.setHeader («Access-Control-Allow-Origin», «*»), где response - HttpServletResponse.

0 голосов
/ 19 апреля 2018

В нашем случае ссылка на страницу была изменена с https на http . Несмотря на то, что пользователи вошли в систему, им не удалось загрузить AJAX.

0 голосов
/ 29 июня 2017

В попытке выиграть приз по самой глупой причине описанной проблемы.

Забыл позвонить

xmlhttp.send(); //yes, you need this pivotal line!

Да, я все еще получал нулевое возвращение статуса от вызова 'open'.

0 голосов
/ 08 мая 2017

Мне кажется, я знаю, что может вызвать эту ошибку.

В Google Chrome есть встроенная функция для предотвращения ddos-атак для расширений Google Chrome.

Когда ajax-запросы непрерывно возвращают более 500 ошибок состояния, он начинает блокировать запросы.

Следовательно, по следующим запросам можно получить статус 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...