在 website 上我试图找出当我在“State/UT”的第一个选择框中选择时调用的部分,随后填充“District/City”选择框。
我在 Firefox 上使用 Firebug,并在 WebResource.axd 文件中的所有函数中打开了断点。我还在 Firebug 中尝试了 Break on Next 选项,但它会将我带到 ScriptResource.axd 中的一些缩小代码。
我想在“District/City”中捕获 AJAX 调用的返回数据,这样我就可以使用 PHP 通过 POST 提交获取 VIEWSTATE 和 EVENTVALIDATION 值来链接下一次调用。
我找不到 AJAX 回调处理程序部分。如何找到它?
选择框的 onchange 处理程序有:
javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$ddlSate\',\'\')', 0)
但是当我在其中设置断点时,脚本执行不会在此函数中停止。
最佳答案
Chrome DevTools 有一种非常有用的方法可以在这种情况下停止脚本执行。在 Elements 面板中,您可以右键单击任何节点并在上下文菜单中选择 Break On...。它有几个选项,但对于这种情况,子树修改是正确的开始方式(AJAX 响应是一个 HTML 片段,因此 JavaScript 很可能会更改网页的 DOM)。
这是堆栈跟踪:
f._onReadyStateChange
绑定(bind)我们的 AJAX 就绪状态事件。它可以通过其在调试器中可见的 _url
变量来证明。我没有探索那里发生了什么。总之,e._updatePanel()
在第 1158 行将响应中的 HTML 插入到 DOM 中:
b.innerHTML = g
请注意,这是 formatted script 的行号,而实际的脚本被缩小了。
关于javascript - 无法找到回调处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28671532/