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

时间:2016-04-04 06:58:54

标签: javascript angularjs ajax google-chrome google-chrome-devtools

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

更多信息:

如果这很重要,则AJAX响应是错误的,因为它请求不存在的URL 此外,当我blackbox Angular时 - 断点不会触发。

1 个答案:

答案 0 :(得分:0)

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调用堆栈并尝试获取提示。例如,在this demo中,调用堆栈中的第一个函数称为eventHandler

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