Функция ответа jQuery.get?
Благодаря StackOverflow мне удалось получить следующий код, работающий отлично, но у меня есть следующий вопрос.
$.get('http://example.com/page/2/', function(data){
$(data).find('#reviews .card').appendTo('#reviews');
});
Этот код выше позволил моему сайту получить вторую страницу статей с кнопкой "Загрузить еще" в WordPress. Однако, когда на сайте заканчиваются страницы/результаты, у меня возникает небольшая проблема. Кнопка загрузки еще не установлена. Он будет пытаться извлекать данные, даже если страницы не остаются.
Как я могу настроить эту команду, чтобы показать визуальный ответ, если запрос .get
не работает или является (404) не найденной страницей?
Если кто-то может помочь мне с простым примером даже alert("woops!");
, который был бы потрясающим!
Спасибо!
Ответы
Ответ 1
$.get
не дает вам возможности установить обработчик ошибок. Вам нужно будет использовать низкоуровневую $.ajax
:
$.ajax({
url: 'http://example.com/page/2/',
type: 'GET',
success: function(data){
$(data).find('#reviews .card').appendTo('#reviews');
},
error: function(data) {
alert('woops!'); //or whatever
}
});
Изменить март '10
Обратите внимание, что с новым объектом jqXHR
в jQuery 1.5 вы можете установить обработчик ошибок после вызова $.get
:
$.get('http://example.com/page/2/', function(data){
$(data).find('#reviews .card').appendTo('#reviews');
}).fail(function() {
alert('woops'); // or whatever
});
Ответ 2
Если вы хотите получить общую ошибку, вы можете настроить все $.ajax()
(который $.get()
использует ниже) запросы, которые jQuery делает для отображения ошибки, используя $.ajaxSetup()
, например:
$.ajaxSetup({
error: function(xhr, status, error) {
alert("An AJAX error occured: " + status + "\nError: " + error);
}
});
Просто запустите это один раз, прежде чем делать какие-либо вызовы AJAX (никаких изменений в вашем текущем коде, просто придерживайтесь этого раньше). Это устанавливает для параметра error
значение по умолчанию для обработчика/функции выше, если вы сделали полный вызов $.ajax()
и указали error
обработчик, то то, что у вас было бы, отменяет выше.
Ответ 3
Вы можете получить подробную ошибку, используя свойство responseText.
$.ajaxSetup({
error: function(xhr, status, error) {
alert("An AJAX error occured: " + status + "\nError: " + error + "\nError detail: " + xhr.responseText);
}
});