Javascript 获取导致ajax错误的函数名
我正在使用我的第一个用于ajax调用的全局错误处理程序,从中获取错误信息,将其发送到PHP脚本,然后记录结果:Javascript 获取导致ajax错误的函数名,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在使用我的第一个用于ajax调用的全局错误处理程序,从中获取错误信息,将其发送到PHP脚本,然后记录结果: $(document).ajaxError(function(event, request, settings){ //get the error and log the results var file = window.location.href; var verbose_error; verbose_error = 'Ajax error: '
$(document).ajaxError(function(event, request, settings){
//get the error and log the results
var file = window.location.href;
var verbose_error;
verbose_error = 'Ajax error: ' + request.responseText + '\n\n';
verbose_error += 'Status:' + request.status + '\n\n';
verbose_error += 'Status Text:' + request.statusText + '\n\n';
verbose_error += 'Url: ' + settings.url + '\n\n';
verbose_error += 'Data: ' + settings.data + '\n\n';
verbose_error += 'Data Type: ' + settings.dataType + '\n\n';
$.post(getUrl() + 'error/log-ajax-error',{file : file,verbose_error : verbose_error},function(o){
});
});
当我对我的PHP脚本进行错误处理时,我可以得到一个堆栈跟踪,以查看哪个函数实际导致了错误。假设我所有的ajax调用都是在其他函数中执行的,我可以得到导致问题ajax调用的函数名吗
例如,在下面的代码中,如果$.post返回错误,我希望能够访问名称badAjaxCall,然后将其放入日志中以帮助调试
function badAjaxCall() {
$.post(url,data,function(o){
});
}
创建一个新错误()
并获取堆栈。你会知道所有的细节。
只要您不抛出该错误,最终用户就不会注意到它。
如果希望在浏览器控制台中获得反馈,也可以执行抛出错误的操作
函数foo(){
baz();
}
函数baz(){
foobar();
}
函数foobar(){
var error=新错误();
警报(错误。堆栈)
}
foo()我不太明白,你想知道哪个PHP函数处理了这个调用吗?如何确定哪个PHP函数处理该调用?这是基于帖子数据还是基于URL?或者你的意思不同吗?对不起,我不太清楚;实际上,我想要包含导致ajax错误的ajax调用的javascript函数:然后我将使用PHP记录我的错误。这是一个黑客攻击,但可能会奏效。将函数名作为数据键/值对之一传递,并从设置访问它。类似于{'funcName':'badAjaxCall}
。在实际的ajax调用过程中,您可以忽略服务器端的该键。这听起来似乎可行,但我必须将其添加到所有ajax调用中。使用您的解决方案,我似乎必须在进行ajax调用的每个函数中实现它。对吗?我真正希望的是在.ajaxError中包含一些东西,它将抛出发送导致错误的ajax请求的原始函数。您可以为ajax调用创建一个包装函数,并在该包装中准备错误对象。然后,您还可以创建一个默认的错误包装来处理它。像这里一样,foobar
将是进行任何ajax调用的包装器。您能用一些代码来澄清吗?这将是我第一次使用错误对象;我更像是一个PHP开发人员。