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 请求时{With jQuery-gdoron},jQuery 都会检查是否还有其他未完成的 Ajax 请求。如果没有进行中,jQuery 会触发 ajaxStart 事件。此时会执行已使用 .ajaxStart() 方法注册的所有处理程序。

将触发ajaxStartand的 jQuery ajax 请求示例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 回答