如何找出哪个Javascript导致jQuery Ajax请求?

如何找出哪个Javascript导致jQuery Ajax请求?,javascript,jquery,Javascript,Jquery,如何找到触发Ajax请求的Javascript代码?在Firebug的控制台中,我们能够识别文件和行号,但是如果我们使用$.ajax或$.post或jQuery的类似功能,它将只在Firebug的控制台中记录jQuery库文件。有什么方法可以获得jQuery函数的实际触发点吗?在chrome和firefox/firebug中,您可以在ajax调用的beforeSend处理程序上使用console.trace(),或者在ajax调用的beforeSend处理程序上使用,以查看是谁调用了它。在您拥有

如何找到触发Ajax请求的Javascript代码?在Firebug的控制台中,我们能够识别文件和行号,但是如果我们使用
$.ajax
$.post
或jQuery的类似功能,它将只在Firebug的控制台中记录jQuery库文件。有什么方法可以获得jQuery函数的实际触发点吗?

在chrome和firefox/firebug中,您可以在ajax调用的beforeSend处理程序上使用console.trace(),或者在ajax调用的beforeSend处理程序上使用,以查看是谁调用了它。

在您拥有的DevTool
Sources
中使用
chrome

如果您打开它,您将在右侧看到
XHR/fetch断点
,如果您选中
Any XHR
,您的脚本将在每个使用
XMLHttpRequest
的请求时暂停(因此任何不使用
jsonp
的请求都会暂停)

如果
任何XHR
选项不可用(仅列出
无断点
),则当URL包含时,您必须单击
+
中断保留为空,然后单击enter。这将创建
任意XHR
选项。(感谢您提供此信息)

使用
调用堆栈
(也在右侧),您将看到请求的来源

但正如我所提到的,这不会中断
jsonp
请求。如果您想跟踪这些请求,您需要使用
jQuery
的未缩小版本(或包括缩小版本的源映射),并在其源代码的正确部分设置断点。要查找此零件,可以使用以下步骤:

  • 在代码中创建一个
    jsonp
    请求,并在此处设置断点
  • 调用这部分代码,以便切换到调试器
  • 使用
    步骤进入
    ,现在您应该在jQuery代码中了。如果您现在在那里放置一个断点,Chrome将停止处理每个
    jsonp
    请求

  • 注意:有时Chrome(可能仅在beta或dev版本中)在重新加载时会丢失断点,因此您需要检查它们在重新加载时是否仍然存在。

    这可能在早期Chrome版本中不存在,但是56.0.2924.87版有一个“启动器”列,告诉html/js文件以及该文件中发起请求的确切行

    此请求可以是XHR、jpg的http请求、css或任何其他请求

    非常圆滑,有助于跟踪请求

    下面是如何使用它

  • 按“F12”打开开发者控制台
  • 在每个请求中查找“Initiator”列,您可以看到“jquery.min.js:4”,这意味着该请求是从文件“jquery.min.js”的第4行启动的

  • 在所有ajax调用中使用console.log(唯一名称)并运行它。在执行过程中,您可以看到控制台如果使用chrome,只需打开控制台中的日志XMLHttpRequests即可完全完成您想要执行的操作。正如Nirus所说,或者您可以始终使用未缩小的jQuery版本,在请求发生的地方设置断点,或者使用chromes XHR断点,这样您就可以看到整个调用堆栈。我希望,我们无法使用调试jquery API实现javascript@Udhay在开发工具中使用Chrome您有
    源代码
    在右侧您会看到
    XHR断点
    如果您选中
    任何XHR
    ,脚本将在每次请求时暂停使用
    XMLHttpRequest
    (因此,任何不使用
    jsonp
    进行请求的请求)使用
    调用堆栈(也在右侧)你会看到请求的来源。据我所知,你想知道是哪个事件触发了ajax请求。这样你就能找到调用它的函数。还是我理解错了?我没有看到任何XHR复选框。它在以后的Chrome版本中被删除了吗?@Tony_Henrich它在最新的Chrome版本中仍然存在(55.0.2883.95).@Tony_Henrich如果您已经找到了答案,那么此评论是为未来试图找到答案的人准备的,单击+按钮或右键单击并单击
    添加断点
    ,然后在字段为空时按enter键,它将自动填充
    任何xhr
    checkbox@YasminFrench谢谢你的信息,我已经更新了我的ans答:我从来没有这样做过,可能这是必需的,因为某个版本的Chrome在我的设置中已经存在,因为它已经存在了。这并不总是有效的,因为有时候Chrome报告
    其他
    。虽然不相关,IE有很好的启动按钮!