如果Ajax请求失败,我希望捕捉错误并显示适当的消息。
我的代码如下所示,但是我无法捕获失败的Ajax请求。
function getAjaxData(id)
{
$.post("status.ajax.php", {deviceId : id}, function(data){
var tab1;
if (data.length>0) {
tab1 = data;
}
else {
tab1 = "Error in Ajax";
}
return tab1;
});
}
我发现,当Ajax请求失败时,“Ajax中的错误”永远不会执行。
如何处理Ajax错误并在失败时显示适当的消息?
一个简单的方法是实现ajaxError:
当Ajax请求完成时
时,jQuery将触发
ajaxError事件。任何和所有处理程序
已经在
.ajaxError()方法在
这一次。
例如:
$('.log').ajaxError(function() {
$(this).text('Triggered ajaxError handler.');
});
我建议阅读ajaxError文档。它所做的不仅仅是上面演示的简单用例——主要是它的回调接受一些参数:
$('.log').ajaxError(function(e, xhr, settings, exception) {
if (settings.url == 'ajax/missing.html') {
$(this).text('Triggered ajaxError handler.');
}
});
从jQuery 1.5开始,你可以使用延迟对象机制:
$.post('some.php', {name: 'John'})
.done(function(msg){ })
.fail(function(xhr, status, error) {
// error handling
});
另一种方法是使用.ajax:
$.ajax({
type: "POST",
url: "some.php",
data: "name=John&location=Boston",
success: function(msg){
alert( "Data Saved: " + msg );
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("some error");
}
});
一个简单的方法是实现ajaxError:
当Ajax请求完成时
时,jQuery将触发
ajaxError事件。任何和所有处理程序
已经在
.ajaxError()方法在
这一次。
例如:
$('.log').ajaxError(function() {
$(this).text('Triggered ajaxError handler.');
});
我建议阅读ajaxError文档。它所做的不仅仅是上面演示的简单用例——主要是它的回调接受一些参数:
$('.log').ajaxError(function(e, xhr, settings, exception) {
if (settings.url == 'ajax/missing.html') {
$(this).text('Triggered ajaxError handler.');
}
});