Prototype.js, отправка формы AJAX иногда возвращает статус 0, XHR остается в readyState 1 - PullRequest
0 голосов
/ 31 мая 2011

У меня странная проблема с Prototype 1.7.0 и отправкой формы AJAX с использованием form.request ().

Состояние ответа - 202 или 200, в зависимости от того, ожидает ли сервер повторного опроса с той же отправкой формы после истечения времени ожидания. 200 указывает, что содержимое ответа выполнено и должно отображаться для пользователя (серверная часть использует execAndWait-перехватчик WebWork для выполнения длительного задания).

Проблема в том, что в большинстве случаев все работает просто отлично. Однако иногда ответ возвращается в виде кода состояния 0 и XMLHTTPRequest readyState 1. Firebug указывает на правильные коды ответа, поступающие из серверной части, и что фактическое содержимое ответа в порядке, просто обработчики On200 и on202 Prototype не запускаются (on0 делает).

Похоже, о подобных проблемах сообщается через Интернет, но нет окончательного решения. Это известная проблема?

1 Ответ

0 голосов
/ 04 мая 2012

Код ответа 0 от прототипа означает, что он не может связаться с сервером. Вы можете исправить это, добавив в ваш запрос обработчик события on0: function () {}.

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

Возможно, вы также захотите поставить в очередь эти запросы на стороне клиента, поэтому вы запускаете только по одному за раз.

Надеюсь, это поможет.

...