如何查看ajax调用完成时将执行的所有方法?

时间:2015-11-05 21:33:58

标签: javascript ajax events javascript-events xmlhttprequest

假设我有一个由我无法控制的页面创建的ajax调用。

页面本身会创建一个请求,获取响应并继续它的工作。页面的代码都不是我的代码。

如何查看哪些方法将作为该请求的回调执行?

换句话说,我怎么知道页面对响应的作用?

重要:我需要能够针对几个不同的来电进行此操作,因此我希望以编程方式"

知道这一点。

是否有一种简单的方法可以列出分配给事件的所有处理程序?

对于instante,请参加" onreadystatechange"事件并找出分配给它的听众?

2 个答案:

答案 0 :(得分:3)

在Chrome中,找到触发AJAX的代码

  • 使用Chrome的网络标签。
  • 让AJAX触发,然后查找相应的行,类型为“xhr”。
  • 然后查看同一行的Initiator并将鼠标悬停在文本上。它应该显示堆栈跟踪的工具提示,并在最顶层请求之前显示最新代码。
  • 点击最上面的条目。它应该将您传输到Sources选项卡,代码启动AJAX。回调应该在附近的某个地方。
    • 如果您知道跟踪中的条目是库,请单击跟踪中看起来不像库的内容。
    • 如果您碰巧使用缩小的代码,Chrome会使用格式化程序。它是左下角的“大括号”图标({})。进一步遇到格式化文件将显示格式化。

在成功的AJAX之后跟踪代码

  • 在Sources上,添加一个断点到回调的位置。
  • 再次运行AJAX,浏览器在完成时将在该断点处暂停。
  • 然后使用F10逐步执行代码。使用F11进入函数。

Chrome:https://developer.chrome.com/devtools/docs/javascript-debugging

Firefox:https://developer.mozilla.org/en-US/docs/Tools/Debugger/How_to/Set_a_breakpoint

  

我需要能够为几个不同的调用做到这一点,所以我希望“以编程方式”知道。

只有当你有权访问(你的代码可以挂钩或在范围内)时,才有可能访问操作中调用的任何函数(覆盖请求的操作方式,或覆盖回调序列中的某些内容。如果是AJAX碰巧使用jQuery,使用AJAX钩子跟随this answer

答案 1 :(得分:1)

您的问题尚不清楚,但您是否尝试过jQuery的ajaxStop?

$(document).ajaxStop(function(){/*Callback here*/});