我该如何捕捉Ajax查询的post错误?

16 浏览
0 Comments

我该如何捕捉Ajax查询的post错误?

我想在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请求失败,我该如何处理Ajax错误并显示相应的消息?

admin 更改状态以发布 2023年5月21日
0
0 Comments

jQuery 1.5 添加了 deferred 对象,很好地处理了这个问题。只需调用 $.post 并在调用后附加任何想要的处理程序即可。deferred 对象甚至允许您附加多个成功和失败处理程序。\n例如:\n

$.post('status.ajax.php', {deviceId: id})
    .done( function(msg) { ... } )
    .fail( function(xhr, textStatus, errorThrown) {
        alert(xhr.responseText);
    });

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

0
0 Comments

\n\n\n\n自jQuery 1.5以来,您可以使用延迟对象机制:\n

$.post('some.php', {name: 'John'})
    .done(function(msg){  })
    .fail(function(xhr, status, error) {
        // error handling
    });

\n另一种方法是使用.ajax: \n

$.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");
  }
});

0