1

私のajax_loaderイメージの下にasp.netコードがあると、うまく機能せず、常に表示されます。

 <asp:ScriptManager ID="MainScriptManager" runat="server" />
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:Label runat="server" ID="lblname">
                        Name</asp:Label><br />
                    <asp:TextBox runat="server" ID="txbname"></asp:TextBox><br />
                    <asp:Label ID="lblemail" runat="server">
                        Email</asp:Label><br />
                    <asp:TextBox runat="server" ID="txbemail" /><br />
                    <asp:Label runat="server" ID="lblsugg">
                        Suggestion</asp:Label><br />
                    <asp:TextBox runat="server" Rows="3" Columns="20" ID="txbsugg" TextMode="MultiLine"></asp:TextBox>
                    <asp:Button runat="server" ID="btnsubmit" OnClick="btnsubmit_onclick" Text="submit" />
                    <asp:Label runat="server" ID="lblresultmsg"></asp:Label>
                </ContentTemplate>
            </asp:UpdatePanel>

            <div id="loading">
                <p>
                    <img src="Images/ajax-loader.gif" />
                    Please Wait</p>
            </div>

およびjqueryコード

    $("#loading").ajaxStart(function() {
        $(this).show();
    }).ajaxStop(function() {
        $(this).hide();
    });

助言がありますか !?

4

2 に答える 2

2

ajaxStartまたajaxStop、jQueryによって送信されたajaxリクエストに対してのみ機能します。他のライブラリまたはを使用している場合UpdatePanelは、役に立ちません。
jQueryのみ。

Ajaxリクエストが送信されようとしているときはいつでも{withjQuery-gdoron}、jQueryは他に未解決のAjaxリクエストがあるかどうかをチェックします。進行中のものがない場合、jQueryはajaxStartイベントをトリガーします。この時点で、.ajaxStart()メソッドに登録されているすべてのハンドラーが実行されます。

ajaxStartおよびを起動するjQueryajaxリクエストの例ajaxStop

$.ajax({
        url: 'foo',
        ...
        ...
    });
于 2012-05-10T16:34:26.633 に答える
1

一般的なjsインクルードに次のコードを追加することで、これを処理する一般的な方法を作成できます。簡単で汚い例を次に示します。

注:SetupGlobalAjaxHandlersページの読み込み時に呼び出して、必ず初期化してください。

function SetupGlobalAjaxHandlers()
{
    var prm = Sys.WebForms.PageRequestManager.getInstance(); 
    prm.add_initializeRequest(InitializeRequest); 
    prm.add_endRequest(EndRequest);
}

function InitializeRequest(sender, args) 
{ 
    if(typeof(OnPageInitRequest) != "undefined")
        OnPageInitRequest();
} 

function EndRequest(sender, args) 
{ 
    if(typeof(OnPageEndRequest) != "undefined")
        OnPageEndRequest();
} 

次に、jsファイルを含む任意のページで、オプションでOnPageInitiRequest()andOnPageEndRequest()メソッドを実装できます。そこで、ローディングインジケーターを表示/非表示にすることができます。

ただし、表示/非表示ロジックを無料で取得するため、 UpdateProgressコントロールを使用することをお勧めします。

この手法は、たとえば、部分的なポストバックが発生しているときにコントロールを無効にしたい場合に、いくつかの可能性を開きます。

于 2012-05-10T16:45:32.613 に答える