2012-09-21 56 views
2

我正在使用asp.net,JavaScript和HTML處理程序。只有當我在Firebug或Chrome開發人員工具中添加斷點時,JavaScript纔會執行

在一個asp按鈕onclick事件中,我正在像這樣調用JavaScript。

<asp:Button ID="btn_Tagging" CssClass="button" UseSubmitBehavior="false" 
    Text="Done" OnClientClick="DoneClick()" /> 

在同一個頁面的腳本標籤內我已經寫JavaScript的是這樣的:

<script type="text/javascript"> 
function DoneClick() 
{ 
    var checkLocation = ""; 
    var txtMM = document.getElementById("hdn_Tagging").value;///Id s of textbox assigned in code behind MB-- 
    txtMM = txtMM.slice(0, -1); 
    var arrTxtMM = txtMM.split(","); 
    for(var j=0;j<arrTxtMM.length;j++) 
    { 
     var Loc = document.getElementById(arrTxtMM[j]).value; 
     if(Loc == "") 
     { 
     checkLocation = ""; 
     break; 
     } 
     else 
     { 
     checkLocation += Loc + ":"; 
     } 
    } 
    if(checkLocation != "") 
    { 
     var url ='Handler/newExifDetails.ashx?Id='+txtMM+'&Location='+checkLocation+''; 
     var completetbl, html; 
     $.getJSON(url,function(json) 
     { 
     $.each(json,function(i,weed) 
     { 
      var res = weed.res; 
      alert(res); 
      if(res == null) 
      { 
      } 
      else 
      { 
       window.top.location.href = "Dashboard.aspx"; 
      } 
      });   
     }); 

    } 
    else 
    { 
     alert("Please pick the locations for all objects"); 
    } 
} 
</script> 

後來,當我在按鈕點擊的JavaScript內的警報只顯示如果我把一個斷點在Firebug或在Chrome開發者工具腳本中,如果我把它的斷點工作。不放置該斷點既不顯示也不重定向。

+3

這聽起來像是在那裏某處的競賽狀況。 – alexandernst

+0

重新檢查您得到的JSON是否正確,並且不包含語法錯誤,如果是這種情況,那麼$ .getJSON通常會以靜默方式失敗。同時在重定向輸入中加入斷點並檢查本地變量。可能會發生奇怪的事情。 – alekperos

+0

爲什麼你在這裏使用'asp:Button'控件?你有這個按鈕的點擊事件的任何服務器邏輯?你的問題是回發發生在$ .getJson函數返回結果給客戶端之前。 –

回答

0

這是一個經典的heisenbug。如果您能向我們展示按鈕在生成的HTML代碼中的樣子,這將有所幫助。您是否嘗試將簡單警報用作點擊處理程序?你有沒有嘗試在JavaScript中動態添加處理程序?

嘗試增加:

$('#btn_Tagging').click(DoneClick); 

或:

$(function() { $('#btn_Tagging').click(DoneClick); }); 

在你的JavaScript代碼結束並刪除:

OnClientClick="DoneClick()" 

從ASP。

我假設生成的HTML按鈕獲取「btn_Tagging」的id - 我正確嗎?如果它不起作用,那麼不要向我們展示您的ASP代碼,而是向我們展示生成的HTML代碼,最重要的是:它的value屬性是什麼。 (另外,由於您已經在使用jQuery for AJAX,因此我建議您也可以使用jQuery來進行DOM操作。您這樣做的方式更容易出錯,而且您沒有使用已經加載的庫。對於一個例子,如果你不小心,即使是getElementById容易引入錯誤見this reply。)

+0

我已經包括了行,因爲你告訴,但仍然沒有顯示斷點沒有斷點...我也試過包括功能內的斷點DoneClick()我得到了這條線之前的所有警報... $ .getJSON(網址,函數(JSON)這條線後的警報沒有顯示...我不共振,也試圖刪除onclientclick,並給了行,你已經提到,但仍然警告後,行json線沒有執行....什麼可能是錯誤的? – Shruthi

+0

嘗試通過[JavaScript美化](http: tifier.org/),因爲你的代碼的縮進使得它在某些地方不太明顯。在'$ .getJSON'處理函數的開頭(在'$ .each(...)'之前)放置一個alert或者更好的'console.dir(json);'來查看你的AJAX調用是否成功以及它實際返回的內容。 – rsp

+0

我試過鏈接你提供,並得到了js對齊,然後我添加了$ .getJSON和$ .each()之前的警報我沒有得到該警報...也沒有console.dir(json)在那裏工作....但那警覺和所有的作品,如果我通過在那個地方放置一個斷點在火蟲...所以..是否有任何問題,在調用JSON? – Shruthi

0

剛剛嘗試,而不是使用asp:Button平原input type="button"控制。或者如下重寫你的按鈕:

<asp:Button ID="btn_Tagging" CssClass="button" UseSubmitBehavior="false" 
    Text="Done" OnClientClick="DoneClick(); return false;" /> 

的問題是在$.getJSON功能,所以它之後稱爲異步成熟,執行上下文離開DoneClick功能,並呼籲__doPostBack功能添加到btn_Tagging HTML控件的屬性onclick通過asp.net基礎設施。

相關問題