【发布时间】:2015-12-11 03:43:04
【问题描述】:
如何从jQuery Ajax Error 获取堆栈跟踪。
【问题讨论】:
标签: javascript jquery error-handling
如何从jQuery Ajax Error 获取堆栈跟踪。
【问题讨论】:
标签: javascript jquery error-handling
有些人可能想知道如何评估调用成功/错误的源 ajax 调用的堆栈,因为这发生在新线程中。以下内容可能对一些解决这个老问题的人有用:
var callingState = new Error(); // capture state/stack when ajax is called
jQuery.ajax({// just showing error property
error: function() {
// employ "closure" to access values from the ajax context
// access stack showing context when ajax was called
alert('Caller stack: ' + callingState.stack);
// access stack during "error" callback
alert('Current stack: ' + (new Error()).stack);
}
});
阅读更多关于“关闭”的信息 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures
【讨论】:
如果您使用的是 chrome,我喜欢使用 debugger 关键字:https://developer.chrome.com/devtools/docs/javascript-debugging#printing-stack-traces 但是,根据问题的性质,您可能需要传入 async: false 或使用其他策略来获取您可能需要的堆栈跟踪(而不是错误回调的堆栈跟踪,这通常可能不太有趣你的问题)。
【讨论】:
您可以在 ajax 命令中添加它。
jQuery.ajax({// just showing error property
error: function(jqXHR,error, errorThrown) {
if(jqXHR.status&&jqXHR.status==400){
alert(jqXHR.responseText);
}else{
alert("Something went wrong");
}
}
});
【讨论】: