AJAX возвращает необычные коды состояния

Итак, я наконец нашел время снова попробовать AJAX (а не скрытые фреймы), и теперь я вспоминаю, почему я так сильно ненавидел AJAX.

Это простой сценарий, который запрашивает у сервера количество личных сообщений, полученных пользователем. Сервер отвечает одним числом, и сценарий обновляет индикатор и устанавливает тайм-аут в пять секунд для повторного запроса.

В редких случаях (обычно, когда я на какое-то время захожу в AFK) я начинаю получать самые причудливые коды состояния HTTP.

В Chrome: «Запрос AJAX не смог получить /ajax/network.php, HTTP-статус 0»
В IE: «Запрос AJAX не смог получить /ajax/network.php, HTTP-статус 12029»

Ни один из этих кодов не действителен. Что здесь происходит, и как я могу этого не допустить?


person Niet the Dark Absol    schedule 28.09.2011    source источник
comment
Повторяются ли эти ошибки или они случаются совершенно случайно?   -  person Alex    schedule 29.09.2011


Ответы (1)


Это раздражающий аспект AJAX. Я считаю, что лучше всего рассматривать все статусы, отличные от 200, как ошибку. На самом деле, вы не собираетесь показывать своим пользователям какие-либо конкретные сообщения об ошибках, относящиеся к фактическому результату («Произошла проблема»), поэтому я просто не буду слишком беспокоиться о несовместимых условиях ошибки.

jQuery нормализует некоторые аспекты поведения AJAX, поэтому вы также можете изучить его использование.

Кстати, ошибка 0 в Chrome и 12029 в IE указывают на проблемы с подключением; поскольку это не имеет ничего общего с HTTP, поэтому отображаются недопустимые коды.

person Jacob    schedule 28.09.2011
comment
Хорошо, я добавил параметр в свою функцию AJAX silent, которая подавляет предупреждение об ошибке. Сообщения об ошибках полезны при действиях, инициированных пользователем, но при автоматическом обновлении они раздражают. Спасибо за ответ, приму, когда это позволит срок. - person Niet the Dark Absol; 29.09.2011
comment
Просто замечание для коллег-гуглеров: соединение 12029, похоже, разорвано. Ссылка: stackoverflow.com/questions/872206/ - person Andrew Dunkman; 19.11.2011
comment
Просто спасибо, почти 4 года спустя, от друга-гуглера. Черт возьми IE8 @AndrewDunkman - person jonayreyes; 17.07.2015