Некоторые проблемы, связанные с сетью, с AJAX - PullRequest
0 голосов
/ 12 апреля 2011

У меня есть тяжелое веб-приложение на ajax, созданное с использованием PHP, jQuery.

Я ищу решение следующих проблем.

(1).Пользователь запускает приложение в браузере.Интернет отключается.Браузер отправляет ajax-запрос к серверу, и запрос явно не выполняется из-за отсутствия сети.Я хочу, чтобы кросс-браузерный способ (включая Windows / MAC / Linux) обнаруживал эту ошибку и отображал уведомление для пользователя.

(2).Сеть включена.Браузер отправляет ajax-запрос на сервер, и до того, как он получает ответ, сеть отключается.Поэтому, когда сервер отправляет ответ, клиент находится в автономном режиме.Здесь также я хочу показать пользователю уведомление об ошибке.Gmail делает это прекрасно.Я написал письмо, нажал кнопку «Отправить» и в тот же момент отключил сетевой кабель.Примерно через 8-10 секунд на экране появится сообщение «К сожалению ... произошла ошибка сервера, и ваше письмо не было отправлено».

Проблема (2) выше становится более сложной для MAC.Я проверял этот случай как на MAC, так и на Windows (я проверял на Windows XP).В Windows XP, если сети нет, запрос умирает через несколько секунд, но в MAC запрос не умирает более 1 часа.Здесь я не могу придумать способ обнаружить, что сеть пропала при получении ответа, и показать это уведомление пользователю?

1 Ответ

2 голосов
/ 12 апреля 2011
$(window).ajaxError(function () {
    alert('Oops.  Server error occurred.');
});

или

error: function() { }

В качестве примечания, все, что можно знать, это что-то не так или нет.Браузер не знает, есть ли на компьютере, на котором он работает, доступ в Интернет или кабель вытягивается ... Все, что он знает, и все, что вам нужно сделать, - это обрабатывать ошибки с помощью этого вышеупомянутого обработчика или функции ошибок jquery.param в вашем вызове AJAX.

Кроме того, для # 2 отображается сообщение об ошибке gmail просто о том, что ваш запрос не был успешно отправлен.Он не имеет ничего общего с процессами на стороне сервера.

РЕДАКТИРОВАТЬ: Для получения дополнительной информации (например, установка более короткого значения времени ожидания):

http://api.jquery.com/jQuery.ajaxSetup

Обратите внимание, чтодопустимые значения для ajaxSetup перечислены ниже:

http://api.jquery.com/jQuery.ajax

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