我正在使用$(document).ajaxError()
来捕获ajax调用中的服务器端和通信错误。
在ajax javascript处理程序中全局捕获客户端错误(用于记录目的)有什么好的干净方法?覆盖$.ajax()
?
E.g。
$.get("http://foo.com/", function(){
alert(undefined.something); // I want this exception to be logged
});
我想避免为我所有的ajax处理程序编写单独的try ... catch ... log。
答案 0 :(得分:1)
我唯一想到的就是绑定这样的error
事件:
$(window).error(function(e){
if ($.active > 0) {
// your error handling
}
});
$.active
显示了活动Ajax请求的数量,因此即使请求返回成功但成功处理程序中存在undefined.something
问题,也会触发错误。
DEMO: http://jsfiddle.net/KWX4k/
更新:来自DEMO的我的测试用例
予。成功处理程序中存在问题的有效Ajax请求:
$.get("/", function() {
undefined.something
});
结果:开火!
II。成功处理程序中没有问题的Invaid Ajax请求:
$.get("http://www.google.com/", function() {
// undefined.something
});
结果:不会触发。
III。代码中的简单未定义错误:
undefined.something
结果:不会触发。
所以,似乎工作正常:)
然而,在这种方法中,我看到一个小缺点。由于Ajax通常以异步方式使用,如果您有两个错误,事件将触发两次 - 在Ajax处理程序和调用此Ajax请求的方法中(即在调用Ajax后立即放置)。但是,这种情况并不重要,因为Ajax请求之后的所有操作通常都会转移到Ajax成功处理程序。