Каковы лучшие практики jQuery относительно удобных методов Ajax и обработки ошибок? - PullRequest
6 голосов
/ 21 мая 2010

Предположим, например, что я хочу частично клонировать интерфейс Gmail с jQuery Ajax и реализовать периодическое автосохранение, а также отправку. И, в частности, давайте предположим, что я забочусь об обработке ошибок, ожидаю сетевых и других ошибок, и вместо того, чтобы просто быть оптимистом, я хочу разумную обработку различных ошибок.

Если я использую низкоуровневую функцию $ .ajax (), то будет понятно, как указать обратный вызов ошибки, но удобные методы $ .get (), $ .post () и .load ( ) не разрешать указание обратного вызова с ошибкой.

Каковы лучшие практики для пессимистической обработки ошибок? Это путем регистрации .ajaxError () с определенными упакованными наборами или глобального обработчика ошибок в стиле самоанализа в $ .ajaxSetup ()? Как должны выглядеть соответствующие части кода, чтобы инициировать автосохранение, чтобы в случае сбоя при автосохранении отображалось предупреждение типа «невозможно автосохранение» и, возможно, сообщение, настроенное для типа ошибки?

Спасибо

1 Ответ

10 голосов
/ 21 мая 2010

Обычной практикой является использование $.ajaxSetup для указания универсального обработчика обратного вызова для ошибок во время не-1004 * функций. Э.Г.

function init() {
    $.ajaxSetup({
        error: handleXhrError
    });
}

function handleXhrError(xhr, errorType, exceptionThrown) {
    // ...
}

Внутри handleXhrError вы можете отобразить либо модальное окно, либо некоторую панель уведомлений, как в Gmail, либо заменить весь document, в зависимости от функциональных требований. Вы можете выполнить действие на основе тела ответа, полученного с помощью xhr.responseText и / или HTTP-кода состояния из xhr.status. Значения тела и статуса ответа контролируются со стороны сервера. Они должны предоставить достаточно информации о проблеме и о том, какое действие предпринять. errorType будет равно 'timeout', когда истечет время ожидания (т.е. проблема с сетью).

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