我遇到了一个 jQuery 问题,这使得调试 JavaScript 变得比现在更加糟糕:如果 jqXHR 延迟函数内部的语句失败,它们将静默失败,而且我还没有找到捕获此错误的方法。考虑以下示例:
var xhr = $.ajax({type: "GET",
url: "test.php"});
xhr.done(function() {
a += b;
});
其中 a 和 b 都未定义。这应该返回一个错误,但是所有执行都停止了,我没有注意到任何事情都失败了。另一方面,如果我写以下内容:
function thisIsAnError() {
a += b;
}
thisIsAnError();
它将按预期失败,将“a is not defined”记录到 Firefox 错误控制台和 Firebug 控制台。
谷歌搜索什么也没发现,也许我错过了 jQuery 中的一些错误处理功能?请注意,xhr.fail() 不会捕获此错误,因为它不是失败的 XHR。