2015-02-23 103 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內看到回覆文字。

相關問題