2013-02-27 83 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请求。如果您想要更多控制权,则应针对各个请求使用完整或成功回调。