我该如何捕捉Ajax查询的post错误?
我该如何捕捉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日
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
。
\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"); } });