我有一个函数test_fn
,它被称为两种方式:
(a)来自按钮的onclick
属性;或者(b)来自jQuery AJAX调用的success
函数,如下所示:
$.ajax({
type: 'POST',
...
success: function(data) {
test_fn();
}
});
我注意到我的Firefox(Linux上的3.6.17)错误控制台似乎没有向我显示在AJAX成功函数调用的代码中出现的任何 javascript错误。而像往常一样,它在由GUI操作运行的代码中显示错误。
例如,如果我的测试函数test_fn
定义如下:
function test_fn() {
blah
}
当通过单击按钮调用test_fn
时,我会看到错误控制台上报告的明显的javascript错误,但是当我的代码执行(成功的)AJAX调用并调用test_fn
时那样。
我环顾网络,并没有看到任何类似“AJAX'线程'不记录他们的javascript错误”或类似的东西。很多我的javascript都是在一个AJAX回调中执行的......我想知道这种行为是否已经在某个地方偷偷摸摸/某种程度上。我有点慌乱;当一个人的Javascript无声地失败时,很难找到没有错误消息或行号的地方。
有人可以提供任何帮助或建议吗?感谢。
答案 0 :(得分:1)
你试过了吗?
$.ajax({
type: 'POST',
...
success: function(data) {
test_fn();
},
error: function(jqXHR, textStatus, errorThrown){
// Aw Snap... Check textStatus maybe?
}
});
答案 1 :(得分:0)
您可以将整个事件包装在try...catch
语句中,并在出现异常时将其记录下来。这可能会有点繁琐,所以你可能想要一个函数返回一个为你包装函数的函数:
function wrap(func) {
return function wrapped() {
try {
func.apply(this, arguments);
}catch(ex) {
if(console&&console.error) {
console.error(ex);
}else{
alert(ex);
}
}
};
}
像这样使用:
$.ajax({
...
success: wrap(function(data) {
// Test it by generating an error by calling a number.
(1)();
})
});