jquery能捕获ajax事件,jquery - 如何捕获Ajax查询发布错误?

jquery - 如何捕获Ajax查询发布错误?

如果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错误并显示相应的消息?

6个解决方案

266 votes

jQuery 1.5添加了延迟对象,可以很好地处理这个问题。 只需致电done并在电话结束后附上您想要的任何处理程序。 延迟对象甚至允许您附加多个成功和错误处理程序。

例:

$.post('status.ajax.php', {deviceId: id})

.done( function(msg) { ... } )

.fail( function(xhr, textStatus, errorThrown) {

alert(xhr.responseText);

});

在jQuery 1.8之前,函数done被称为success,而fail被称为error。

Michael Venable answered 2019-03-22T18:33:17Z

230 votes

从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");

}

});

choise answered 2019-03-22T18:32:44Z

88 votes

$.ajax({

type: 'POST',

url: 'status.ajax.php',

data: {

deviceId: id

},

success: function(data){

// your code from above

},

error: function(xhr, textStatus, error){

console.log(xhr.statusText);

console.log(textStatus);

console.log(error);

}

});

jAndy answered 2019-03-22T18:33:34Z

14 votes

$.post('someUri', { },

function(data){ doSomeStuff })

.fail(function(error) { alert(error.responseJSON) });

marknery answered 2019-03-22T18:33:52Z

12 votes

一种简单的方法是实现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.');

}

});

karim79 answered 2019-03-22T18:34:34Z

0 votes

我通过在jQuery ajax调用中声明datatype: 'json'来修复此问题。

Eleanor Zimmermann answered 2019-03-22T18:35:01Z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值