Chrome在调试AJAX时只显示调用堆栈中的库行

Chrome only shows Library lines in call stack when debuggin AJAX

本文关键字:堆栈 调用 显示 调试 AJAX Chrome      更新时间:2023-12-29

我已经设置了"XHR断点"来中断"Any XHR"来查找,哪一行触发AJAX请求,但当我检查调用堆栈时,所有行都是Angular.js库行。这没有意义,因为这样我就找不到代码中哪一行触发了请求。我该怎么办?

更多信息:

如果这很重要,那么AJAX响应就是错误的,因为它请求一个不存在的URL
此外,当我黑框Angular时,断点不会触发。

Angular不会立即发出Ajax请求。相反,它会将其排队,直到摘要完成。

您可以通过拦截$http.get方法或用于发出请求的任何方法来找到引起请求的代码。

debugCall($http, "get"); // put this somewhere where it's only called once
function debugCall(object, methodName){
    var originalMethod = object[methodName];
    object[methodName] = function(){
         debugger;
         originalMethod.apply(this, arguments)
    }
}

您还可以查看Angular调用堆栈,并尝试在其中获得提示。例如,在这个演示中,调用堆栈中的第一个函数被称为eventHandler

如果转到该调用帧并在控制台中运行event.target.outerHTML,则会得到<button ng-click="doXhr()">Do XHR 2</button>。这样您就可以很好地了解在哪里查找请求。