1

我遇到了一个 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。

4

2 回答 2

0

调试 js 的一种方法(和 imo 最好的方法)是使用 chrome 扩展的 firefox,firebug。Firefox 有一个比 chrome 扩展更高级的插件,但两者都可以工作。

阿洛斯,.fail()不会工作,你要找的是.error()

于 2011-08-02T18:15:03.943 回答
0

您正在使用的$.get()功能没有done()方法。我相信你想要附加你的功能的是success()方法。它工作的jsFiddle 示例

http://api.jquery.com/jQuery.get/

http://api.jquery.com/jQuery.get/#jqxhr-object

于 2011-08-02T18:19:34.750 回答