2012-07-02 45 views
3

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

当我正在做作业并阅读时SO(和许多其他地方),我碰到那里的人根本做忽略了这种错误的帖子下面传来:

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

它是安全的假定只有这种错误会被忽略?是否会出现需要“特别关注”的消极情景?

ALSO:

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

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

+0

在哪里你见过吗? “0”甚至不是有效的状态码。 – WhyNotHugo

+0

状态码0表示jqxhr对象未初始化。如果我将_console.log(jqxhr.status); _放入_.ajaxError_事件(如上所述)并多次重新加载页面(在响应之前中断请求),我可以看到此代码。 – Spartak

回答

1

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

+1

弹出的唯一问题是:是否还有其他可以匹配上述条件的错误(状态码= 0,就绪状态= 0)?这就是我所说的“这种方法是否安全?”。我不想过滤掉除此之外的其他场景... – Spartak

+0

我真的想知道如何做到这一点! – frabcus

1

针对你的问题“它是否安全”,我的回答是,是的,它是安全的。自过去几个月以来,我一直在使用它,它对我来说非常有用。

但是,在api文档下方会显示有关错误对象的更多信息。我还没有移动到jQuery 1.9 *,但它仍然很好。

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