如何区分jQuery .fail()

时间:2013-10-23 09:20:05

标签: javascript jquery ajax error-handling

对于jQuery AJAX调用(http://api.jquery.com/jQuery.getJSON/),我们使用.fail()回调来记录JavaScript错误。

然而,看起来.fail()功能也会被呼叫,当呼叫尚未完成时,但是已中止离开网站(跟踪仍然有效,但是,因为有有时足够的时间使window.onerror被触发)。

现在,跟踪中止的AJAX请求并不是我们想要的。我们想知道请求是否有效(即响应)。

是否有可能区分“AJAX呼叫中止”和“没有响应的AJAX呼叫”?

1 个答案:

答案 0 :(得分:2)

有。 fail处理程序收到三个参数:jqXHRtextStatuserrorThrown。对于已中止的请求,textStatus将等于"abort",因此您可以使用

确定原因
$.getJSON(...).fail(function(xhr, status) { if (status == "abort") ... });

如果您对进一步过滤感兴趣,其他可能的值包括"notmodified""error""timeout""parsererror"