2010-07-28 129 views
0

我有一些JavaScript,我正在向UpdatePanel內的文字控件寫出來。我已經設置它每15秒提醒當前時間,但我總是得到原來的時間。當我使用Firebug時,我可以看到腳本正在更新。這是因爲它的部分頁面刷新?我該如何阻止這種情況發生。我已經添加了OutputCache指令來嘗試停止緩存,以查看是否存在問題,但這沒有任何區別。Javascript更新問題。 ASP.net UpdatePanel

這是代碼示例。前端:

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager> 
<asp:UpdatePanel ID="updTest" runat="server" UpdateMode="Always"> 
    <ContentTemplate> 
     <script type="text/javascript"> 
      function initScript(){ 
      <asp:literal id="litUpdateScript" runat="server" /> 
      } 
     </script> 
    </ContentTemplate> 
    <Triggers> 
     <asp:AsyncPostBackTrigger EventName="Tick" ControlID="panelRefresh" /> 
    </Triggers> 
</asp:UpdatePanel> 
<asp:Timer ID="panelRefresh" Interval="15000" runat="server"></asp:Timer> 

代碼背後:

Protected Sub panelRefresh_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles panelRefresh.Tick 
    Me.litUpdateScript.Text = "alert('" & Now.ToString() & "');" 
End Sub 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    Me.litUpdateScript.Text = "alert('" & Now.ToString() & "');" 
    Dim script As String = "initScript();" 
    ScriptManager.RegisterStartupScript(updTest, updTest.GetType(), "Myscript", script, True) 
End Sub 

這會導致頁面加載正確的時間,但是,計時器刷新不會改變。雖然我可以看到腳本在螢火蟲中變化。

+0

請發送代碼。 – TheGeekYouNeed 2010-07-28 13:51:23

+0

沒有看到你的代碼就看不到你的代碼,但是在JS中人們常常設置處理程序而忽略閉包,所以變量被實例化,函數在定義處理程序時調用,而不是在運行時調用。 – 2010-07-28 14:41:43

回答

0

我有一個猜測,我承認並沒有真正嘗試這個,但已與JavaScript和更新面板相當多。

我想你應該嘗試在tick中註冊事件而不是page_load。更多的東西是這樣的:

Protected Sub panelRefresh_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles panelRefresh.Tick 
    Me.litUpdateScript.Text = "alert('" & Now.ToString() & "');" 
    Dim script As String = "initScript();"  
    ScriptManager.RegisterStartupScript(this.updatePanel, typeof(string), "alertScript", "alert('Error Message');", true); 
End Sub 

將在谷歌四處尋找我沒有說,人們曾與page_loads問題,但讓他們在其他賽事工作。值得一試,讓我知道。

+0

沒有沒有解決。同樣的問題。看起來它應該仍然在Firebug中工作。 – fizzer 2010-07-29 08:58:49