Javascript Chrome仅在调试AJAX时在调用堆栈中显示库行
我已经将“XHR断点”设置为在“Any XHR”上断开以查找,哪一行触发AJAX请求,但是当我检查调用堆栈时,所有的行都是Angular.js库行。这是没有意义的,因为这样我就找不到我的代码中哪一行触发了请求。我该怎么办 更多信息: 如果这很重要,AJAX响应是错误的,因为它请求一个不存在的URL。Javascript Chrome仅在调试AJAX时在调用堆栈中显示库行,javascript,angularjs,ajax,google-chrome,google-chrome-devtools,Javascript,Angularjs,Ajax,Google Chrome,Google Chrome Devtools,我已经将“XHR断点”设置为在“Any XHR”上断开以查找,哪一行触发AJAX请求,但是当我检查调用堆栈时,所有的行都是Angular.js库行。这是没有意义的,因为这样我就找不到我的代码中哪一行触发了请求。我该怎么办 更多信息: 如果这很重要,AJAX响应是错误的,因为它请求一个不存在的URL。 另外,当我黑盒角度-断点不会触发 Angular不会立即发出Ajax请求。相反,它会将其排队,直到摘要完成 您可以通过拦截$http.get方法或任何用于发出请求的方法来查找导致请求的代码 debu
另外,当我黑盒角度-断点不会触发 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
,您将得到Do XHR 2
。这会让您很好地了解在哪里查找请求。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
,您将得到Do XHR 2
。这会让您很好地了解在何处查找请求。对Angular的工作原理有很好的了解。关于拦截$http方法,问题是我找不到它,这就是为什么我开始使用调试器寻找它。当然,我可以通读代码,只是想使用调试器使它更快。@naneri我不知道是什么阻止了你截取它。您只需在应用程序中的任何位置覆盖$http.get
功能一次。完成后,无论在何处使用$http.get
,它都会暂停。这对Angular的工作原理有很好的了解。关于拦截$http方法,问题是我找不到它,这就是为什么我开始使用调试器寻找它。当然,我可以通读代码,只是想使用调试器使它更快。@naneri我不知道是什么阻止了你截取它。您只需在应用程序中的任何位置覆盖$http.get
功能一次。完成后,无论在何处使用$http.get
,它都将暂停。