Подтвердить что ты не робот

Предотвратить необработанную ошибку AJAX jQuery

Я знаю, как получать данные сервера или ошибки. Есть много способов. Например:

$.ajax({
    type: "get",
    url: "/widgets/",
    success: function (data, text) {
        console.log('this is a data');
    },
    error: function (request, status, error) {
        console.log('this is an error');
    }
});

Пожалуйста, смотрите это изображение:

result in chrome developer console

У меня есть функция ошибки, и я делаю то, что мне нужно. Как предотвратить ошибку в первой строке. Я тестировал ошибки 4xx и 5xx, но никаких различий. Я знаю, что конечный пользователь не видит эту ошибку, когда консоль разработчика скрыта.

Мне нужно это для разработки API. Я знаю, что могу отправить 200 ответов от сервера с дополнительным аргументом, который показывает, что это ошибка или результат успеха.

Но если я могу отправить ответы 4xx или 5xx, нет необходимости в дополнительном аргументе. Этот способ имеет некоторые дополнительные выгоды для меня. Например, я могу применить результат успеха для своих моделей на стороне клиента, не беспокоясь о дополнительных аргументах.

Спасибо

4b9b3361

Ответ 1

AFAIK вы не можете заставить красные вещи уйти, возвращая коды состояния ошибок (4xx, 5xx). Они используются браузером, чтобы указать, что что-то может не получиться так, как ожидалось. Тем не менее, это просто украшения, поскольку коды статуса 4xx и 5xx совершенно верны, поэтому я не вижу причин, по которым вы хотите их устранить.

Как вы сами сказали, ваша другая альтернатива будет отправлять "200 ответов от сервера с дополнительным аргументом, который показывает, что это ошибка или результат успеха".

Я, конечно, рекомендую использовать коды 4xx и 5xx, хотя (для чего они предназначены) и перестать беспокоиться о предупреждениях в браузере в консоли разработчика (также известный как red thingies).

См. также этот и этот вопрос, который относится к аналогичным ошибкам при получении других видов ресурсов (изображения, файлы и т.д.). Ошибки, которые вы видите, на самом деле имеют одинаковую природу.