Firefox没有't在AJAX上显示javascript错误'线程'

Firefox doesn't show javascript errors on AJAX 'threads'?

本文关键字:显示 javascript 错误 线程 没有 Firefox AJAX      更新时间:2023-09-26

我有一个函数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无声地失败时,很难在没有错误消息或行号的情况下找到位置。

有人能提供任何帮助或建议吗?谢谢

您尝试过吗:

$.ajax({
    type:  'POST',
    ...
    success: function(data) {
        test_fn();
    },
    error: function(jqXHR, textStatus, errorThrown){
       // Aw Snap... Check textStatus maybe?
    }
});

您可以将整个事件包装在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)();
    })
});