无法找到回叫处理程序
在website我试图找出当我在“州/ UT”的第一个选择框中选择并随后填充“区/城市”选择框时调用的部分。无法找到回叫处理程序
我在Firefox上使用Firebug并打开了WebResource.axd文件中所有函数的断点。我也尝试了BreakBar在下一个选项在Firebug中,但它需要我在ScriptResource.axd中的一些缩小代码。
我想在“区/城市”中捕获AJAX调用的返回数据,这样我就可以通过使用PHP提交VIEWSTATE和EVENTVALIDATION值来链接通过POST提交的下一个调用。
我无法找到AJAX回调处理程序部分。如何找到它?
的选择框的onChange处理有:
javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$ddlSate\',\'\')', 0)
但脚本执行不会在此功能停止时,我在里面设置一个断点。
在这种情况下,Chrome DevTools有一个非常有用的停止脚本执行的方法。在元素面板中,您可以右键单击任意节点并在上下文菜单中选择Break On ...。它有几个选项,但对于这种情况子树修改是正确的开始方式(AJAX响应是一个HTML片段,因此JavaScript很可能会更改网页的DOM)。
这里是堆栈跟踪:
f._onReadyStateChange
结合我们的AJAX的准备状态的事件。它可以通过调试器中可见的_url
变量来证明。我没有探索那里发生的事情。无论如何,从行1158的响应到DOM e._updatePanel()
插入HTML:
b.innerHTML =克
注意这是在formatted script的行数,而实际脚本已经过压缩。
请注意,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
Firebug的Net panel has a Break On XHR选项,它可以帮助您找到请求发生的位置。
启用该选项后,脚本执行将在调用XMLHttpRequest的send()
函数时中断。
几行代码(在行4221处),您会发现分配给请求的onreadystatechange
属性的响应处理函数(称为_onReadyStateChange
)。
搜索代码中的函数定义并在检查.readyState === 4
(表示请求已完成)后设置断点。
当你从下拉列表中选择一些东西时,你的执行就会停止。然后您可以在Watch side panel内看到回复文字。
在'__doPostBack'中放置一个断点。 – Bergi 2015-02-23 10:31:01
@Bergi我已经提到过......当我在“State/UT”选择框中选择时,它不会停在那里。 – user5858 2015-02-23 10:32:41
我也在调试Firefox和Chrome中代码段的问题。您是专门针对这个问题提出的问题,还是您对从代码中学习东西更感兴趣? – 2015-02-26 06:47:46