2013-02-27 135 views
2

當頁面加載時,JavaScript中的函數commentsShowHideEffect運行。當發出ajax請求時,方法commentsShowHideEffect()中的所有指令都消失了。如何恢復這些isntructions或在ajax請求後再次調用commentsShowHideEffect()方法?AJAX請求後的Javascript

<script> 
    $(function() { 
     commentsShowHideEffect(); 
    }); 
</script} 

<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional"> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="MessageButton" /> 
    </Triggers> 
    <ContentTemplate> 
     <asp:Timer ID="RefreshTimer" runat="server" Interval="500" /> 
      <asp:DataList ID="ChatDataList" runat="server" > 
       <ItemTemplate>  
        <td><asp:Label ID="lblRaterName" runat="server" Text='<%# Eval("Text")%>'></asp:Label></td> 
       </ItemTemplate> 
      </asp:DataList> 
    </ContentTemplate> 
</asp:UpdatePanel> 

回答

2

您可以綁定Sys.WebForms.PageRequestManager endRequest事件,該事件在更新面板完成ajax請求後觸發。

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
function EndRequestHandler(sender, args) 
{ 
    alert("After ajax call ended"); 
} 
+0

這就是我一直在尋找的東西。 – TheChampp 2013-02-27 10:55:05

1

定義commentsShowHideEffect出了jQuery範圍:

<script> 
    function commentsShowHideEffect() { 
     //do something 
    } 

    $(document).ready(function(){ 
     commentsShowHideEffect(); 
    }); 
</script> 

而且我更喜歡使用的document.ready語法,因爲它更清晰的程序員理解它是什麼。

+0

但是,當AJAX刷新ContentTemplate函數「commentsShowHideEffect」的所有isntructions不再工作。請求發出後如何讓他們再次工作? – TheChampp 2013-02-27 10:39:56

+0

你能否在你的問題中澄清你說的是什麼意思? – RvdK 2013-02-27 10:41:41

1

你沒有在你的問題中提及jQuery,也沒有在標籤中提到。 但你的代碼看到建議你在使用它,所以這裏是一個鏈接到相關的文檔頁面:

http://api.jquery.com/ajaxComplete/

在你的情況,這應該工作:

$(document).ajaxComplete(function(event,request, settings) { 
    commentsShowHideEffect(); 
}); 

注意以上將觸發每個Ajax請求。如果您想要更多控制權,則應針對各個請求使用完整或成功回調。