JQuery $.get или $.post, чтобы поймать ошибку загрузки страницы (например, 404)
Как вы поймаете ошибку сервера или 404 страницу не найдена, когда вы используете $.get или $.post?
Например:
$.post("/myhandler", { value: 1 }, function(data) {
alert(data);
});
Это ничего не сделает, если при загрузке "Ошибка/Ошибка" загрузится "Ошибка сервера" или если он не найден.
Как вы сообщаете об этом, если есть ошибка?
Ответы
Ответ 1
использовать 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){}
});
Ответ 2
вы могли бы сделать
$.post("/myhandler", { value: 1 }, function(data) {
alert(data);
}).fail(function(){
// Handle error here
});
fail будет вызван, если theres ошибка
Ответ 3
Другие ответы хороши и все, но есть альтернативные решения, а именно .ajaxSetup
, .ajaxError
и другие обработчики событий Ajax (проверьте дополнительную информацию о файле ajaxSetup).
Например, с помощью .ajaxError
вы можете настроить глобальный обработчик всех ваших ошибок ajax из .post
, .get
, .getJSON
и .ajax
для определенного набора элементов.
$(selector).ajaxError(function(event, xhr, ajaxOptions, errorThrown) {
// handle ajax error here
});
Ответ 4
Используйте $.ajax
вместо этого и используйте обратный вызов error
.
http://api.jquery.com/jQuery.ajax/
Ответ 5
Попробуйте использовать $.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/"})