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

Функция ответа jQuery.get?

Благодаря StackOverflow мне удалось получить следующий код, работающий отлично, но у меня есть следующий вопрос.

$.get('http://example.com/page/2/', function(data){ 
  $(data).find('#reviews .card').appendTo('#reviews');
});

Этот код выше позволил моему сайту получить вторую страницу статей с кнопкой "Загрузить еще" в WordPress. Однако, когда на сайте заканчиваются страницы/результаты, у меня возникает небольшая проблема. Кнопка загрузки еще не установлена. Он будет пытаться извлекать данные, даже если страницы не остаются.

Как я могу настроить эту команду, чтобы показать визуальный ответ, если запрос .get не работает или является (404) не найденной страницей?

Если кто-то может помочь мне с простым примером даже alert("woops!");, который был бы потрясающим!

Спасибо!

4b9b3361

Ответ 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);
     } 
    });