我有一些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
這會導致頁面加載正確的時間,但是,計時器刷新不會改變。雖然我可以看到腳本在螢火蟲中變化。
請發送代碼。 – TheGeekYouNeed 2010-07-28 13:51:23
沒有看到你的代碼就看不到你的代碼,但是在JS中人們常常設置處理程序而忽略閉包,所以變量被實例化,函數在定義處理程序時調用,而不是在運行時調用。 – 2010-07-28 14:41:43