【问题标题】:How can I stop jQuery.ajax() from logging failures to the console?如何阻止 jQuery.ajax() 将失败记录到控制台?
【发布时间】:2012-08-10 13:19:52
【问题描述】:

我正在使用以下 jQuery JSONP 请求通过 URL 检查资源的状态。当资源不可用或服务器关闭时,我的ajaxFail() 函数会更新显示。

function fetchServerStatus(service, host)
{
    var port = serverStatus[service].port;
    $.ajax({
        url: "http://" + host + ":" + port + "/admin/server/status",
        dataType: "jsonp",
        timeout: 1000,
        error: ajaxFail,
        fail: ajaxFail,
        success: ajaxDone,
        done: ajaxDone,
        complete: ajaxAlways,
        always: ajaxAlways
    });
}

我遇到的问题是,尽管声明了 failerror 的处理程序,它们不会将任何内容记录到控制台,但 jQuery 总是在控制台中记录失败的请求。如果资源长时间不可用,这会建立一个巨大的控制台日志,最终导致浏览器进程崩溃(在我的例子中是 Chrome)。

有没有办法阻止它这样做?

【问题讨论】:

标签: javascript jquery google-chrome


【解决方案1】:

将其放在页面顶部:

<script>

$(document).ready(function() {
jQuery.migrateMute = true;
})
</script>

它是临时的 - 但对我有用。无需滚动 45 行废话来调试 js 错误。

【讨论】:

  • 也许 jQuery 创建这些消息的原因是您必须更改代码中的某些内容。它们绝不是废话。而是更新您的代码!
  • 它与代码几乎没有关系——我的代码很好。许多 chrome 扩展做各种奇怪的事情。我有 2 个我需要的东西在控制台中放了很多废话。考虑到 b4 u 否决/假设我不知道控制台错误很重要 - 记录(如 OP 所述)是一个完全不同的问题。
  • 当您确定一切正常并希望在产品模式下推送项目时,此代码很有用
  • 在某些情况下,您已经在 ajax 调用中有错误处理程序,它有助于隐藏这些错误。例如:如果要检查用户是否有特定的图像,并且在 ajax 错误功能下,检查默认类别是否有同名的图像。在这种情况下,如果您已经知道 ajax 调用正常工作,它有助于隐藏错误。它会抛出一个错误,但你期待这个错误,并且已经处理了它。这个答案可能会有所帮助。想法可以是开箱即用的,并不总是必须遵循典型的标准。 aspie 的想法开箱即用 :)
【解决方案2】:

chrome控制台中的日志条目是chrome在处理任何HTTP请求时的行为,jQuery或ajax(XMLHttpRequest)没有问题,即使&lt;img&gt;&lt;link&gt;标签也可以导致这个问题。

您唯一的选择是修复您的服务器端代码,以免触发 ajax 错误(例如,找不到 404 或错误的内容类型),因此根据记录到控制台的内容,也许可以找到更好的解决方案,请在您的控制台中提供准确的日志记录消息。

【讨论】:

  • 这是一个客户端错误,因为错误代码是 4xx 范围,这种建议有 27 个赞,我不敢相信!客户应该更好地出错
  • 不幸的是,许多 REST Web 服务对 语法正确 请求返回 HTTP 400 错误 ("malformed syntax")。很好的解释:stackoverflow.com/a/24610322
猜你喜欢
  • 2012-08-17
  • 2022-01-02
  • 2021-02-11
  • 2020-07-30
  • 2018-04-09
  • 1970-01-01
  • 1970-01-01
  • 2018-10-01
  • 2015-04-13
相关资源
最近更新 更多