如何找到触发 Ajax 请求的 Javascript 代码?在 Firebug 的控制台中我们可以识别文件和行号,但是如果我们使用jQuery$.ajax
或$.post
类似的功能,它只会在 Firebug 的控制台中记录 jQuery 库文件。有什么办法可以得到jQuery函数的实际触发点?
问问题
30925 次
3 回答
136
Chrome
在您拥有的DevTool中使用Sources
.
如果你打开它,你会在右侧看到XHR/fetch Breakpoints
,如果你检查Any XHR
你的脚本将在每个使用的请求时暂停XMLHttpRequest
(所以任何不jsonp
用于请求的请求)。
如果Any XHR
选项不可用(仅No Breakpoints
列出),则您必须单击+
将Break when URL contains:
字段留空并按 Enter。这将创建Any XHR
选项。(感谢Yasmin French提供此信息)
使用Call Stack
(也在右侧),您将看到请求的来源是什么。
jsonp
但是正如我所提到的,如果您想跟踪这些请求,这不会中断请求,您需要使用未缩小的版本jQuery
(或包含缩小版本的源映射)并在其源中的正确部分设置断点。要找到这部分,您可以使用以下步骤:
- 在您的代码中创建一个
jsonp
请求并在此位置设置一个断点。 - 调用这部分代码,以便切换到调试器。
- 使用
Step into
,现在您应该在 jQuery 代码中。如果您现在在此处放置断点,Chrome 将在每次jsonp
请求时停止。
注意:有时Chrome(可能仅在beta或dev版本中)在重新加载时往往会丢失断点,因此您需要检查它们在重新加载时是否仍然存在。
于 2013-06-20T09:33:50.987 回答
1
在 chrome 和 firefox/firebug 中,您可以在.always()或 ajax 调用的 beforeSend 处理程序上使用 console.trace() 来查看是谁调用了它。
于 2013-06-20T08:03:57.320 回答