2015-02-23 99 views
3

website我试图找出当我在“州/ UT”的第一个选择框中选择并随后填充“区/城市”选择框时调用的部分。无法找到回叫处理程序

我在Firefox上使用Firebug并打开了WebResource.axd文件中所有函数的断点。我也尝试了BreakBar在下一个选项在Firebug中,但它需要我在ScriptResource.axd中的一些缩小代码。

我想在“区/城市”中捕获AJAX调用的返回数据,这样我就可以通过使用PHP提交VIEWSTATE和EVENTVALIDATION值来链接通过POST提交的下一个调用。

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

的选择框的onChange处理有:

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

但脚本执行不会在此功能停止时,我在里面设置一个断点。

+0

在'__doPostBack'中放置一个断点。 – Bergi 2015-02-23 10:31:01

+0

@Bergi我已经提到过......当我在“State/UT”选择框中选择时,它不会停在那里。 – user5858 2015-02-23 10:32:41

+0

我也在调试Firefox和Chrome中代码段的问题。您是专门针对这个问题提出的问题,还是您对从代码中学习东西更感兴趣? – 2015-02-26 06:47:46

回答

2

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

这里是堆栈跟踪:

JavaScript call stack

f._onReadyStateChange结合我们的AJAX的准备状态的事件。它可以通过调试器中可见的_url变量来证明。我没有探索那里发生的事情。无论如何,从行1158的响应到DOM e._updatePanel()插入HTML:

b.innerHTML =克

注意这是在formatted script的行数,而实际脚本已经过压缩。

+0

请注意,Firebug是第一个为DOM元素提供[Break on ... features]功能的工具(https://getfirebug.com/wiki/index.php/HTML_Panel#Context_Menu),它还有[更多的Break在...功能](https://getfirebug.com/wiki/index.php/Break_On _...)比其他devtools。 – 2016-02-03 07:17:26

0

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

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

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

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

当你从下拉列表中选择一些东西时,你的执行就会停止。然后您可以在Watch side panel内看到回复文字。

相关问题