ASP.Net/Jquery在Response.End()之后找到客户端事件

时间:2012-02-15 15:38:15

标签: jquery asp.net

我有一个按钮,它在服务器上生成一个PDF文件,然后将响应头信息设置到客户端以供下载文件。

我想在回发期间显示“Please Wait ...”消息,因为这可能是时间密集的。单击按钮时我可以显示一个没有问题的div但是当服务器返回信息时我无法隐藏这个div。

以下是我的服务器端代码:

Response.Buffer = true;
Response.Charset = "";
Response.AddHeader("content-disposition", "attachment; filename=" + Casefile.SerialCode + ".ppt");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "application/octet-stream";
Response.BinaryWrite(binaryData);
Response.Flush();
Response.End();

我已经尝试过以下Jquery来隐藏我的Div但它永远不会被调用...

$(document).onLoad(function ()
{
   $('#divLoading').css("display", "none");
});

2 个答案:

答案 0 :(得分:2)

我对此完全一样:

        $(document).ready(function () {
            $('#inProgress').hide();
        });

修改 您可以尝试在服务器端使用clientscriptmanager。

ClientScriptManager.RegisterStartupScript(this.GetType(), "HideDiv", "$('#inProgress').hide();", true)

或者你可以尝试类似:(在你的javascript中)

        Sys.Application.add_init(appl_init);

        function appl_init() {
            var pgRegMgr = Sys.WebForms.PageRequestManager.getInstance();               
            pgRegMgr.add_endRequest(EndHandler);
        }

        function EndHandler() {           
            $('#inProgress').hide();
        }

答案 1 :(得分:0)

尝试:

pageLoad = function()
{
    $('#divLoading').hide();
};

修改 之所以我使用pageLoad而不是$(document).ready,是因为pageLoad将触发部分回发(UpdatePanels)。从您的代码看起来您​​正在进行完整的回发,但代码应该仍然有用。