防止未处理的 jQuery AJAX 错误 [重复]

Posted

技术标签:

【中文标题】防止未处理的 jQuery AJAX 错误 [重复]【英文标题】:Prevent Unhandled jQuery AJAX Error [duplicate] 【发布时间】:2013-05-05 02:22:38 【问题描述】:

我知道如何接收服务器数据或错误。有很多方法。例如:

$.ajax(
    type: "get",
    url: "/widgets/",
    success: function (data, text) 
        console.log('this is a data');
    ,
    error: function (request, status, error) 
        console.log('this is an error');
    
);

请看这张图片:

我有我的错误功能,我在那里做我需要的事情。 如何防止第一行出现错误。 我测试了 4xx 和 5xx 错误,但没有区别。 我知道当开发者控制台被隐藏时最终用户不会看到这个错误。

我需要这个来设计一个 API。 我知道我可以从服务器发送 200 条响应,并带有一个额外的参数来表明这是一个错误或成功的结果。

但是如果我可以发送 4xx 或 5xx 响应,那么就不需要额外的参数了。 这种方式对我来说有一些额外的收获。例如,我可以将成功结果应用于我的客户端模型,而无需担心额外的参数。

谢谢

【问题讨论】:

jquery-1.9.1.js:8526 // This may raise an exception which is actually // handled in jQuery.ajax (so no try/catch here) xhr.send( ( s.hasContent && s.data ) || null ); xhr.send 包裹在try/catch不会 阻止错误显示在开发者控制台中。请注意,这些不是 JS 错误/异常,而是与浏览器发出的request 相关,因此试图捕获JS 错误是行不通的。跨度> 试试这个答案:***.com/questions/7436195/… 【参考方案1】:

AFAIK 当返回错误状态代码(4xx、5xx)时,你不能让红色的东西消失。浏览器使用它们来指示某些事情可能没有按预期进行。这些仍然只是装饰,因为 4xx 和 5xx 状态码是完全有效的,所以我看不出你有什么理由要消除它们。

正如您自己所说,您的另一种选择是发送“来自服务器的 200 条响应以及显示这是错误或成功结果的附加参数”。

我当然推荐使用 4xx 和 5xx 代码(这就是它们的设计目的),并且不要再担心开发者控制台中浏览器的警告警告(又名红色的东西)。

另请参阅this 和this 问题,这些问题涉及在获取其他类型的资源(图像、文件等)时出现的类似错误。您看到的错误实际上具有相同的性质。

【讨论】:

有一种情况是最好避免报告这些错误:测试(特别是 Web 应用程序的无头测试)。例如,您为失败的 ajax 请求编写测试(例如使用 mocha-phantonJS)。测试摘要中出现所有这些错误很烦人。 我检查了一个页面是否存在,红色的错误让它看起来像是出了问题,所以最好抑制它。 @JVE999:我的回答成立。不要成为“红色恐惧症”! 4xx 和 5xx 是有效代码,您无法对浏览器如何选择记录它们做任何事情(也不应该担心)。如果您太担心用户打开控制台并由于红色事物而错误判断您的应用程序,也许您可​​以记录一些消息来解释它并让他们知道这是预期的行为。

以上是关于防止未处理的 jQuery AJAX 错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

jQuery的$ .ajax防止重复提交的方法

jquery ajax如何防止多次提交

jQuery 修复“未捕获的 TypeError:$ 不是函数”错误 [重复]

jquery ajax 放在重复点击事件beforeSend方法

ReferenceError:未定义jQuery jQuery.noConflict() [重复]

防止重复发送ajax请求