AJAX请求后的Javascript

本文关键字:Javascript 请求 AJAX | 更新日期: 2023-09-27 18:01:33

加载页面时,运行javascript中的commentsShowHideEffect函数。当发出ajax请求时,方法commentsShowHideEffect()中的所有指令都消失了。如何恢复这些指令或调用commentsShowHideEffect()方法后再次ajax请求?

<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>

AJAX请求后的Javascript

你可以绑定Sys.WebForms.PageRequestManager endRequest事件,该事件将在ajax请求被更新面板完成后触发。

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

在jQuery范围外定义commentsShowHideEffect:

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

我更喜欢使用文档。Ready语法,因为程序员更容易理解它是什么

您的问题中没有提到jQuery,也没有在标签中提到。但是你的代码显示你正在使用它,所以这里有一个相关文档页面的链接:

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

在你的情况下,这应该可以工作:

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

注意,上面的代码将为每个ajax请求触发。如果你想要更多的控制,你应该对单个请求使用complete或success回调。