好的,我确实使用firebug来确定什么时候在Dev中没有定义函数。我想在生产中做的是显示一个模态窗口,说收到了一个错误,然后在单击时将它们重定向到另一个页面。不是很容易。
--请理解这个函数的工作原理和组件的工作原理。我将故意拼写函数调用,以演示我没有通过jquery函数接收到的错误。。
我使用.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.showDebtIssues。Firebug在控制台中正确地显示错误nsNewDebtshowDebtIssues,但是ajax调用的实际错误消息没有运行,因此如果enduser正在运行该页面,它将显示该页面被挂起。
因此,总之,我想知道如何跟踪何时发生这样的错误,最好放在.ajaxSsetup的error部分,但在每个.ajax调用中是否必要。
发布于 2011-12-22 14:11:51
这个错误实际上发生在AJAX调用成功之后(因为它来自您的success
处理程序),所以error
处理程序实际上不会被调用。
如果要对实际的AJAX请求错误和来自success
处理程序的进一步错误使用相同的处理程序,则可以定义命名函数,并将其用作error
处理程序和success
处理程序中的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
});
发布于 2011-12-22 14:07:21
这不是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);
}
}
发布于 2011-12-22 14:00:30
在打电话之前,您可以:
if(typeof nsNewDebtshowDebtIssues == 'function') {
// .. call it ..
}
https://stackoverflow.com/questions/8604925
复制相似问题