通过响应流发送给浏览器的文件后,不阻止(jQuery的BlockUI) [英] Unblock (jQuery BlockUI) after file sent to browser through response stream

查看:277
本文介绍了通过响应流发送给浏览器的文件后,不阻止(jQuery的BlockUI)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个< ASP:按钮/> 生成PDF格式的报告。我想使用jQuery BlockUI显示一条消息,上面写着:生成报告。

I have an <asp:button /> that generates a PDF report. I want to use jQuery BlockUI to display a message that says: Generating Report..

使用: Response.BinaryWrite 我然后将文件发送给用户,以便它显示为在浏览器中的文件下载

Using: Response.BinaryWrite I am then sending the file to the user so it appears as a file download in the browser.

我不能让 $ unblockUI(); 火。一旦文件下载开始或已完成或取消,我希望它dissappear。目前,它从来不会..它好像页面没有被重新加载,我已经打了服务器,但它与同一页回来。

I cannot get $.unblockUI(); to fire. As soon as the file download begins or has completed or is cancelled I want it to dissappear. Currently it never does.. It's as though the page hasn't been re-loaded, I've hit the server but it comes back with the same page.

东西我曾尝试:


  • 在JS的变量设置为true,因此在的document.ready()它会调用一个函数,如果设置为true。这不起作用,因为即使我改变变量code它不会更改发送到客户端的HTML。

  • 这样的事情: Sys.WebForms.PageRequestManager.getInstance()add_pageLoaded(函数(){$ .unblockUI;}); //与微软的方式登记
    (文档)$ .ajaxStop($ unblockUI); //双保险,使用jQuery的方式注册

    不会被调用。

  • Setting a variable in JS to true so on document.ready() it will call a function if set to true. This doesn't work because even though I change the variable in code it doesn't change the HTML that is sent to the client.
  • This sort of thing: Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function() { $.unblockUI; }); //register with Microsoft way $(document).ajaxStop($.unblockUI); //double the insurance and register with jquery way never gets called..

这能与一个UpdatePanel实现?

Can this be achieved with an updatepanel?

有什么想法?

此外,在情况下,它可以帮助

Also in case it helps:

Response.AddHeader("Content-Disposition", "attachment;filename=""" & ShortFilename & """")
        Response.AddHeader("Content-Length", byteArray.Length)
        Response.BinaryWrite(byteArray)
        Response.Flush()
        Response.End()

我明白为什么这不工作排序,页面不刷新,无论如何也只是被发送到浏览器的响应流,但肯定有一个事件,我可以锁存到?

I can see why this doesn't work sort of, the page is not refreshing in anyway there's just a response stream being sent to the browser, but surely there's an event I can latch on to?

推荐答案

的解决方案是第一阻塞UI为正常。然后,让一个AJAX请求到报表生成器,当PDF是很短的时间产生它在本地存储,或者当用户注销或他们的登录超时有它在被清除出临时文件夹。有报告生成器返回成功消息和网址。

The solution is to first block the UI as normal. Then make an AJAX request to your report generator, when the PDF is generated store it locally for a short time, or have it in a temporary folder that is cleared out when the user logs out or their login times out. Have the report generator return a success message and a URL.

在客户端Ajax请求处理成功的消息,删除BlockUI,然后使用调用的网址:

Have the client ajax request handle the success message, remove BlockUI, then call the URL using:

window.location="http://yourURL/temp/report.pdf

浏览器将开始下载文件和你做!

The browser will start to download the file and you are done!

http://stackoverflow.com/a/7660817/181197

这篇关于通过响应流发送给浏览器的文件后,不阻止(jQuery的BlockUI)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆