首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >捕获函数在Javascript和jQuery中未定义错误

捕获函数在Javascript和jQuery中未定义错误
EN

Stack Overflow用户
提问于 2011-12-22 13:58:16
回答 3查看 1.4K关注 0票数 2

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

--请理解这个函数的工作原理和组件的工作原理。我将故意拼写函数调用,以演示我没有通过jquery函数接收到的错误。

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

代码语言:javascript
运行
复制
$.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调用是:

代码语言:javascript
运行
复制
$.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.showDebtIssues。Firebug在控制台中正确地显示错误nsNewDebtshowDebtIssues,但是ajax调用的实际错误消息没有运行,因此如果enduser正在运行该页面,它将显示该页面被挂起。

因此,总之,我想知道如何跟踪何时发生这样的错误,最好放在.ajaxSsetup的error部分,但在每个.ajax调用中是否必要。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-22 14:11:51

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

如果要对实际的AJAX请求错误和来自success处理程序的进一步错误使用相同的处理程序,则可以定义命名函数,并将其用作error处理程序和success处理程序中的try/catch块:

代码语言:javascript
运行
复制
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
});
票数 1
EN

Stack Overflow用户

发布于 2011-12-22 14:07:21

这不是ajax错误,因此您无法从ajaxError方法处理它。

你应该尝试/抓住成功的方法。

代码语言:javascript
运行
复制
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);
    }
}
票数 3
EN

Stack Overflow用户

发布于 2011-12-22 14:00:30

在打电话之前,您可以:

代码语言:javascript
运行
复制
if(typeof nsNewDebtshowDebtIssues == 'function') {
  // .. call it ..
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8604925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档