Что лучшие практики jQuery расценивают удобные методы Ajax и обработку ошибок?

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

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

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

Спасибо,

6
задан Sumurai8 26 June 2015 в 17:25
поделиться

1 ответ

Обычной практикой является использование $. AjaxSetup для указания универсального обработчика обратного вызова для ошибок во время выполнения функций, отличных от $. Ajax . Например.

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

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

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

10
ответ дан 10 December 2019 в 00:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: