Javascript jQuery延迟函数中的语句以静默方式失败
我遇到了一个jQuery问题,这使得调试JavaScript变得比现在更麻烦:如果jqXHR延迟函数中的语句失败,它们将无声地失败,我还没有找到捕获此错误的方法。考虑下面的例子:Javascript jQuery延迟函数中的语句以静默方式失败,javascript,jquery,jquery-deferred,Javascript,Jquery,Jquery Deferred,我遇到了一个jQuery问题,这使得调试JavaScript变得比现在更麻烦:如果jqXHR延迟函数中的语句失败,它们将无声地失败,我还没有找到捕获此错误的方法。考虑下面的例子: var xhr = $.ajax({type: "GET", url: "test.php"}); xhr.done(function() { a += b; }); 其中a和b均未定义。这应该会返回一个错误,但是所有的执行都会停止,我没有收到任何失败的通知。另一方面
var xhr = $.ajax({type: "GET",
url: "test.php"});
xhr.done(function() {
a += b;
});
其中a和b均未定义。这应该会返回一个错误,但是所有的执行都会停止,我没有收到任何失败的通知。另一方面,如果我写下以下内容:
function thisIsAnError() {
a += b;
}
thisIsAnError();
它将如预期的那样失败,Firefox错误控制台和Firebug控制台都没有定义日志记录
谷歌搜索什么也没找到,也许jQuery中有一些错误处理功能我错过了?请注意,xhr.fail不会捕获此错误,因为失败的不是xhr。调试js和imo的一种方法最好的方法是使用firefox的chrome扩展firebug。Firefox有一个比chrome扩展更高级的插件,但两者都可以工作 Alos、.fail不起作用,您要查找的是.error您正在使用的$.get函数没有done方法。我相信你想要的是成功的方法。它的工作原理
对不起,我应该用一个更准确的例子——我实际上是用$.AJAX调用我的AJAX请求,它有一个.done函数。不管怎样,请注意,只记录一个错误,尽管a是未定义的并在两个位置调用。我只是查看了JSFIDLE,它给出了两个错误,不知为什么,我只得到了一个错误。看起来一定是我的机器出了故障,而不是jQuery本身。无论如何,谢谢你的帮助。编辑:在Chrome上,我有两个错误。火狐,一个。我想从现在起我将在Chrome上调试。我有Firebug。事实上,使用Firebug调试器单步执行代码会破坏它——当遇到错误时,它会停止无声地执行代码,但Firebug仍然认为它正在调试。