Давайте предположим для примера, что я хочу частично клонировать интерфейс Gmail с Ajax jQuery и реализовать периодическое автоматическое сохранение, а также отправку. И, в частности, давайте предположим, что я забочусь об обработке ошибок, ожидая сеть и другие ошибки, и вместо того, чтобы просто быть оптимистичным, что я хочу разумную обработку различных ошибок.
Если я использую функцию "низкого уровня" $ .ajax () затем, ясно, как указать ошибочный обратный вызов, но удобные методы $ .get (), $ .post (), и .load () не позволяют ошибочному обратному вызову быть указанным.
Каковы лучшие практики для пессимистической обработки ошибок? Это путем регистрации .ajaxError () с определенными перенесенными наборами или стилем самоанализа глобальный обработчик ошибок в $ .ajaxSetup ()? То, что было бы соответствующие части кода быть похожими для инициирования автосохранения так, чтобы "не мог сохранить автоматически" тип, предупреждающий, отображено, если предпринятое автосохранение перестало работать, и возможно сообщение, которое настраивается к типу ошибки?
Спасибо,
Обычной практикой является использование $. AjaxSetup
для указания универсального обработчика обратного вызова для ошибок во время выполнения функций, отличных от $. Ajax
. Например.
function init() {
$.ajaxSetup({
error: handleXhrError
});
}
function handleXhrError(xhr, errorType, exceptionThrown) {
// ...
}
Внутри handleXhrError
вы можете отобразить модальное окно или какую-то панель уведомлений, как это делает Gmail, или заменить весь документ
, в зависимости от функциональных требований. Вы можете предпринять действия на основе тела ответа, полученного с помощью xhr.responseText
и / или кода состояния HTTP из xhr.status
. Значениями тела ответа и статуса можно управлять со стороны сервера. Они должны предоставить достаточно информации о проблеме и о том, какое действие при ошибке следует предпринять. errorType
будет равняться 'timeout'
, когда истекло время ожидания (т. Е. Проблема с сетью).