页面重新加载时Ajax状态代码0

时间:2012-07-02 15:17:09

标签: jquery ajax response http-status-codes pageload

我有一个应用程序,它通过页面加载上的$ .ajax调用检索一些页面数据(没有其他绑定,比如'click'等)。在一个场景中,当用户在响应到达之前重新加载页面(或导航到另一个页面)时,应用程序返回错误(触发错误事件ajaxError()),状态码为0。

当我做作业并阅读SO(以及许多其他地方)时,我遇到了一些帖子,人们通过以下方式忽略了这类错误:

$(document).ajaxError(function(e, jqxhr, settings, exception) {  
  if (jqxhr.readyState == 0 || jqxhr.status == 0) {  
    return; //Skip this error  
  }  
});  

假设只会忽略这种错误是否安全?是否会出现需要“特别关注”的任何负面情景?

ALSO:

我发现了一些类似问题的回复,声称“返回假”;或'preventDefault'解决了他们的问题。但在我的情况下,一切都发生在页面加载,所以我不能“挂钩”任何提到的事件......或者我可以吗?

编辑:此处的其他问题是:是否还有其他方法可以处理这些情况(ajax请求被页面重新加载中断)?问题是我在一般的ajaxError事件上绑定了错误报告,我想过滤掉这样的消息(或者甚至可能阻止它们首先发生)?

2 个答案:

答案 0 :(得分:1)

这将忽略从ajax调用返回的所有错误。它是安全的:用户永远不会注意到错误发生。在任何具体的例子之外很难说,但是当你的AJAX调用失败时你的应用程序可能会中断,除非每个处理程序都按照处理错误。

答案 1 :(得分:1)

回答你的问题“是否安全”,我的回答是,是的,这是安全的。我过去几个月一直在使用它,它对我很有用。

但是,在api文档下面会隐藏有关错误对象的更多信息。我还没有转向jQuery 1.9 *,但它仍然很好。

了解更多信息: http://api.jquery.com/jQuery.ajax/#jqXHR