jQuery.получить функцию ответа на ошибку?


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

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

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

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

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

спасибо!

3 56

3 ответа:

$.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

если вы хотите общую ошибку, вы можете настроить все $.ajax() (где $.get() использует под) запросов jQuery делает, чтобы отобразить сообщение об ошибке, используя $.ajaxSetup(), например:

$.ajaxSetup({
  error: function(xhr, status, error) {
    alert("An AJAX error occured: " + status + "\nError: " + error);
  }
});

просто запустите это один раз, прежде чем делать какие-либо вызовы AJAX (никаких изменений в текущем коде, просто вставьте это раньше где-нибудь). Это устанавливает до по умолчанию к обработчику / функции выше, если вы сделали полный $.ajax() позвоните и укажите error обработчик то, что у вас было бы переопределить выше.

вы можете получить подробную ошибку, используя свойство responseText.

$.ajaxSetup({
error: function(xhr, status, error) {
alert("An AJAX error occured: " + status + "\nError: " + error + "\nError detail: " + xhr.responseText);
     } 
    });