Javascript和jQuery中未定义陷阱函数错误

Javascript和jQuery中未定义陷阱函数错误,javascript,jquery,error-handling,Javascript,Jquery,Error Handling,好的,我确实使用firebug来确定什么时候函数没有在Dev中定义。我想在生产环境中做的是显示一个模式窗口,说明接收到错误,然后在单击时将它们重定向到另一个页面。不那么容易 请理解此函数确实起作用,而称为的组件也起作用。我打算故意拼错函数调用,以证明我没有通过jquery ajax函数收到错误。 我正在使用.ajaxSetup为几个将异步运行的ajax函数设置默认选项: $.ajaxSetup({ type: "POST", dataType: "json", url:

好的,我确实使用firebug来确定什么时候函数没有在Dev中定义。我想在生产环境中做的是显示一个模式窗口,说明接收到错误,然后在单击时将它们重定向到另一个页面。不那么容易

请理解此函数确实起作用,而称为的组件也起作用。我打算故意拼错函数调用,以证明我没有通过jquery ajax函数收到错误。

我正在使用.ajaxSetup为几个将异步运行的ajax函数设置默认选项:

$.ajaxSetup({
    type: "POST",
    dataType: "json",
    url: "DMF.cfc",
    data: {
    qID: 1,
    returnFormat: "json"
    },
    beforeSend: function() {
        $('#loadingmessage').fadeIn();  // show the loading message.
    },
    complete: function() {
        $('#loadingmessage').fadeOut();  // show the loading message.
    }
    });  //end AjaxSetup
实际的ajax调用是:

$.ajax({
        data: {
            method: 'getCurrentIssues'
        },
        success: function(response) {
            nsNewDebtshowDebtIssues(response);
        },//end success function
        error: function(jqXHR, exception) {
            alert("Error running nsNewDebt.showDebtIssues");
        }
    })  //end getCurrentIssues Ajax Call
我强制执行的错误是,在success函数中运行的方法实际上应该是nsNewDebt.showdebteissues。Firebug在控制台中正确显示错误nsNewDebtshowDebtIssues未定义,但ajax调用的实际错误消息未运行,因此如果最终用户正在运行该页面,则该页面将显示为挂起


因此,总而言之,我想知道如何跟踪何时发生这样的错误,最好放在.ajaxSsetup的error部分,但如果每个.ajax调用都需要这样做。

在调用之前,您可以执行以下操作:

if(typeof nsNewDebtshowDebtIssues == 'function') {
  // .. call it ..
}

这不是ajax错误,因此无法通过
ajaxError
方法处理它

你应该尝试一下成功的方法

success: function(response) {
    try {
        nsNewDebtshowDebtIssues(response);
    } catch (ex) {
        //exception occured
        //alert("Error running nsNewDebt.showDebtIssues");
        alert( ex.message + '\n\tin file : ' + ex.fileName + '\n\t at line : ' + ex.lineNumber);
    }
}

实际上,错误发生在AJAX调用成功之后(因为它来自
success
处理程序),因此
error
处理程序实际上不会被调用

如果您希望对实际的AJAX请求错误和源于
成功
处理程序的其他错误使用相同的处理程序,则可以定义一个命名函数,并将其用作
错误
处理程序和
成功
处理程序中的
try
/
catch
块:

function handleError(jqXHR, status, exception)
{
    alert("Error running request.");
    // Or print something from 'jqXHR', 'status' and 'exception'...
}

$.ajax({
    data: {
        method: "getCurrentIssues"
    },
    success: function(response, status, jqXHR) {
        try {
            nsNewDebtshowDebtIssues(response);
        } catch (x) {
            handleError(jqXHR, status, x);
        }
    },
    error: handleError
});

try{…}catch(err){…}
块中将代码包装在“success”函数中怎么样?这无疑是最灵活的解决方案,尽管它们都没有错。这考虑到我希望有一个错误函数来控制所有错误。谢谢大家。