jQuery $ .get или $ .post для обнаружения ошибки загрузки страницы (например, 404) - PullRequest
16 голосов
/ 14 января 2011

Как вы поймаете ошибку сервера или страницу 404 не найдена, когда вы используете $ .get или $ .post?

Например:

$.post("/myhandler", { value: 1 }, function(data) {
  alert(data);
});

Это абсолютно ничего не сделает, если при загрузке сервера произошла ошибка «/ myhandler» или он не найден.

Как сделать так, чтобы оно уведомляло вас в случае ошибки?

Ответы [ 5 ]

39 голосов
/ 08 марта 2013

вы могли бы сделать

$.post("/myhandler", { value: 1 }, function(data) {
  alert(data);
}).fail(function(){ 
  // Handle error here
});

ошибка будет вызвана, если есть ошибка

23 голосов
/ 14 января 2011

использовать error обработчик на $.ajax()

$.ajax({
    url: "/myhandler", 
    data: {value: 1},
    type: 'post',
    error: function(XMLHttpRequest, textStatus, errorThrown){
        alert('status:' + XMLHttpRequest.status + ', status text: ' + XMLHttpRequest.statusText);
    },
    success: function(data){}
});

демо

5 голосов
/ 14 января 2011

Другие ответы хороши и все, но есть альтернативные решения, а именно: .ajaxSetup, .ajaxError и другие обработчики событий Ajax (для получения дополнительной информации посетите страницу документации ajaxSetup на отдыхе).

Например, с помощью .ajaxError вы можете настроить глобальный обработчик всех ваших ошибок ajax из .post, .get, .getJSON и .ajax для определенного набора элементов.

$(selector).ajaxError(function(event, xhr, ajaxOptions, errorThrown) {
    // handle ajax error here
});
2 голосов
/ 14 января 2011

Вместо этого используйте $.ajax и используйте обратный вызов error.

http://api.jquery.com/jQuery.ajax/

1 голос
/ 27 октября 2015

Попробуйте использовать $.ajaxSetup(), stausCode опция

$.ajaxSetup({
   statusCode : {
     // called on `$.get()` , `$.post()`, `$.ajax()`
     // when response status code is `404`
     404 : function (jqxhr, textStatus, errorThrown) {
             console.log(textStatus, errorThrown);
           }
     }
 });

// $.get("/path/to/url/");
// $.post("/path/to/url/");
// $.ajax({url:"/path/to/url/"})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...