无法找到回调处理程序

时间:2015-02-23 10:24:01

标签: javascript debugging firebug handler

website我试图找出当我在" State / UT"中的第一个选择框中选择时调用的部分。然后填补"区/城市"选择框。

我在Firefox上使用Firebug并在WebResource.axd文件中的所有函数中打开了断点。我还尝试过Firebug中的 Break on Next 选项,但是我需要在ScriptResource.axd中使用一些缩小的代码。

我想在"区/城市"中收听AJAX呼叫的返回数据。这样我就可以使用VIEWSTATE和EVENTVALIDATION值来通过使用PHP的POST提交链接下一个调用。

我无法找到AJAX回调处理程序部分。怎么找到它?

selectbox的onchange处理程序包含:

javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$ddlSate\',\'\')', 0)

但是当我在其中设置断点时,脚本执行不会在此函数中暂停。

2 个答案:

答案 0 :(得分:2)

在这种情况下,Chrome DevTools有一种非常有用的方法可以停止脚本执行。在 Elements 面板中,您可以右键单击任何节点,然后在上下文菜单中选择 Break On ... 。它有几个选项,但对于这种情况,子树修改是正确的启动方式(AJAX响应是HTML片段,因此JavaScript很可能会更改网页的DOM)。

这是堆栈跟踪:

JavaScript call stack

f._onReadyStateChange绑定我们的AJAX就绪状态事件。它可以通过调试器中可见的_url变量来证明。我没有探究那里发生的事情。无论如何,e._updatePanel()在第1158行将响应中的HTML插入到DOM中:

  

b.innerHTML = g

请注意,这是formatted script的行号,而实际脚本则缩小了。

答案 1 :(得分:0)

Firebug的Net panel has a Break On XHR选项,可帮助您找到请求发生的位置。

启用该选项后,脚本执行将在调用XMLHttpRequest的send()函数时中断。

几行(在第4221行),您会发现响应处理函数(称为_onReadyStateChange)被分配给请求的onreadystatechange属性。

在代码中搜索函数定义,并在检查.readyState === 4后设置断点(意味着请求已完成)。

当您从下拉列表中选择某些内容时,您的执行将在此时停止。然后,您就可以在Watch side panel中看到响应文字。