2013-07-11 41 views
1

我只是想學習一些Asp.net Ajax的東西,並從我的C#腳本調用JavaScript。定時器中的客戶端腳本不工作

我有一個計時器,觸發一個方法,調用超級簡單的JavaScript警報函數。 它也每10秒更新一次。現在看起來像我的代碼應該工作。沒有構建錯誤,只是它不起作用。更新時間的C#部分。 JavaScript不會提示。

<%@ Page Language="C#" %> 

    <!DOCTYPE html> 
    <html> 

    <head runat="server"> 
     <title></title> 
     <script runat="server"> 
     protected void Page_load(object sender, EventArgs e) 
     { 
      if (!Page.IsPostBack) 
      { 
       Label1.Text = DateTime.Now.ToString(); 
      } 
     } 
     protected void Timer1_Tick(object sender, EventArgs e) 
     { 
      const string someScript = "alertMe"; 
      Label1.Text = DateTime.Now.ToString(); 
      ClientScript.RegisterStartupScript(this.GetType(),someScript, "alert('I was called from Content page!')", true); 
     } 
    </script> 

    </head> 
    <body> 
     <form id="form1" runat="server"> 
     <div> 
      <asp:ScriptManager runat="server"> </asp:ScriptManager> 
    <asp:UpdatePanel runat="server"> 
     <ContentTemplate> 
      <asp:Label runat="server" ID="Label1"></asp:Label> 
      <asp:Timer ID="Timer1" runat="server" Interval="10000" OnTick ="Timer1_Tick"></asp:Timer> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
     </div> 
     </form> 
    </body> 
    </html> 
+0

任何這是可怕的,但UpdatePanel將需要知道任何觸發器,所以嘗試添加一個定時器。 –

+0

嗯,更新標籤的C#部分正常工作,並執行異步回發,每10秒更改一次標籤中的時間。我沒有任何UpdatePanel的問題,我的問題是爲什麼不是JavaScript的工作。 –

回答

2

當您在UpdatePanel中放置觸發回發的元素時,您需要使用ScriptManager而不是ClientScript。

你的代碼更改爲:

ScriptManager.RegisterStartupScript(this,this.GetType(), someScript, @"alert('I was called from Content page!');", true); 
+0

聽起來不錯。讓我嘗試一下。 –

+0

非常感謝你的作品。一個小問題。如果我的頁面中已經包含JavaScript庫(可以說jQuery),我可以在傳遞的腳本中使用jquery命令嗎? –

+1

是的,絕對的,它也適用於jQuery或任何其他Javascript庫。 – Icarus

0

你忘了;

ClientScript.RegisterStartupScript(this.GetType(),someScript, "alert('I was called from Content page!');", true); 

大多數瀏覽器都有某種類型的錯誤控制檯,您可以在發生這些問題時看到這些問題。