如何阻止jQuery.ajax()将失败记录到控制台?

Wil*_*ins 32 javascript jquery google-chrome

我使用以下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
    });
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,尽管声明了处理程序,fail并且error没有将任何内容记录到控制台,jQuery总是在控制台中记录失败的请求.如果资源长时间不可用,则会构建一个巨大的控制台日志,最终导致浏览器进程崩溃(在我的情况下为Chrome).

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

ota*_*tay 51

chrome控制台中的日志记录条目是处理任何HTTP请求时的chrome行为,而不是jQuery或ajax(XMLHttpRequest)的问题,即使是<img><link>标记也可能导致此问题.

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

  • 这是一个客户端错误,因为错误代码是4xx范围,这种建议有27个upvotes,我无法相信!客户应该更好地错误 (8认同)
  • 不幸的是,许多REST Web服务返回"HTTP 400"错误("[格式错误的语法](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1)")**语法正确**请求.好的解释:http://stackoverflow.com/a/24610322 (2认同)