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

Как обнаружить ошибку JQuery $.get? Поиск простого примера кода

Я JQuery N00B. Я пытаюсь кодировать очень просто, используя $.get(). Официальная документация гласит

If a request with jQuery.get() returns an error code, it will fail silently 
unless the script has also called the global .ajaxError()  method or. 

As of jQuery 1.5, the .error() method of the jqXHR object 
returned by jQuery.get() is also available for error handling.

Так что, если все пойдет хорошо, будет вызвана моя функция обратного вызова для успеха. Однако, если запрос не выполняется, я хотел бы получить код HTTP: 404, 502 и т.д. И сформулировать содержательное сообщение об ошибке для пользователя.

Однако, поскольку это асинхронный вызов, я могу представить, что у меня может быть несколько выдающихся. Как .ajaxError() узнает, какому запросу он соответствует? Может быть, было бы лучше использовать метод .error() объекта jqXHR, возвращаемого jQuery.get()?

Может ли кто-нибудь предоставить чрезвычайно простой пример кода? Возможно, подпрограмма успеха вызывает Alert ("Страница найдена"), а процедура сбоя проверяет 404 и выполняет Alert ("Страница не найдена")


Обновление: следующая страница чрезвычайно полезна... http://api.jquery.com/jQuery.get/

4b9b3361

Ответ 1

Вы правы, что вы можете использовать jQXHER 1.5 jQXHR для назначения обработчиков ошибок для запросов $.get(). Так вы можете это сделать:

var request = $.get('/path/to/resource.ext');

request.success(function(result) {
  console.log(result);
});

request.error(function(jqXHR, textStatus, errorThrown) {
  if (textStatus == 'timeout')
    console.log('The server is not responding');

  if (textStatus == 'error')
    console.log(errorThrown);

  // Etc
});

Вы также можете привязать обработчики непосредственно к вызову:

$.get('/path/to/resource.ext')
     .success(function(result) { })
     .error(function(jqXHR, textStatus, errorThrown) { });

Я предпочитаю, чтобы первый сохранял код менее запутанным, но оба эквивалентны.

Ответ 2

.get() является просто синонимом .ajax() с заранее заданным набором параметров. Используйте ajax(), чтобы получить полный диапазон параметров, включая обратный вызов error.

$.ajax({
type: "GET",
url: "test.htm",
error: function(xhr, statusText) { alert("Error: "+statusText); },
success: function(msg){ alert( "Success: " + msg ); }
}
);

Ответ 3

Начиная с jQuery 3.0 .success() и .error() .success().
.done() вы можете использовать .done() и .fail()

$.get( url )
    .done(function( data, textStatus, jqXHR ) {
        console.log(data);
    })
    .fail(function( jqXHR, textStatus, errorThrown ) {
        console.log(jqXHR);
        console.log(textStatus);
        console.log(errorThrown );
    });

Источник: https://api.jquery.com/jQuery.ajax/