jQuery延迟函数中的语句无提示失败

时间:2011-08-02 18:00:32

标签: javascript jquery jquery-deferred

我遇到一个jQuery问题,这使得调试JavaScript变得比现在更糟糕:jqXHR延迟函数内的语句如果失败就会无声地失败,而我还没有找到捕获此错误的方法。请考虑以下示例:

var xhr = $.ajax({type: "GET",
                   url: "test.php"});
xhr.done(function() { 
    a += b; 
});

其中a和b都是未定义的。这应该返回一个错误,但是所有的执行都停止了,我没有注意到任何事情都失败了。另一方面,如果我写下以下内容:

function thisIsAnError() {
    a += b;
}
thisIsAnError();

它将按预期失败,向Firefox错误控制台和Firebug控制台记录“a未定义”。

Google搜索没有任何结果,也许jQuery中有一些错误处理函数我错过了?请注意,xhr.fail()不会捕获此错误,因为它不是失败的XHR。

2 个答案:

答案 0 :(得分:0)

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

Alos,.fail()无效,您正在寻找的是.error()

答案 1 :(得分:0)

您使用的$.get()函数没有done()方法。我相信你想要附加你的功能的是success()方法。 jsFiddle exmample它的工作原理。

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

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