2

ページが読み込まれると、commentsShowHideEffectjavascriptの関数が実行されます。ajaxリクエストが行われると、メソッド内のすべての命令commentsShowHideEffect()が失われます。これらのistructionsを回復する方法、または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>
4

3 に答える 3

2

更新パネルでajaxリクエストが完了した後に発生するSys.WebForms.PageRequestManagerendRequestイベントをバインドできます。

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function EndRequestHandler(sender, args)
{
     alert("After ajax call ended");
}
于 2013-02-27T10:40:43.670 に答える
1

質問でもタグでもjQueryについて言及していません。しかし、あなたのコードはあなたがそれを使用していることを示唆しているように見えるので、ここに関連するドキュメントページへのリンクがあります:

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

あなたの状況では、これはうまくいくはずです:

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

上記は、すべてのajaxリクエストに対してトリガーされることに注意してください。より詳細な制御が必要な場合は、個々のリクエストに対して完全コールバックまたは成功コールバックを使用する必要があります。

于 2013-02-27T10:40:35.543 に答える
1

jQuery スコープ外で commentsShowHideEffect を定義します。

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

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

さらに、document.ready 構文を使用することを好みます。これは、プログラマーがそれが何であるかをより明確に理解できるためです。

于 2013-02-27T10:36:13.163 に答える