jquery.fileDownload:告知用户进度

时间:2013-02-21 22:49:39

标签: jquery jquery-ui http jquery-plugins

我正在使用John Culviner(伟大的)jquery.fileDownload插件。它有下载完成时的回调,但我的文件生成大约需要30秒(大量的后端处理)。

我想告知用户当前的进度。

作为原型,我正在尝试这个:

1)(在启动文件下载之前) - 每秒重复轮询一个URL($ .get(...))。它返回%complete并更新页面上的div(此时为0%)。

2)启动fileDownload脚本(此时,服务器端变量1)正在检查开始更新,例如2%完成.... 10%完成....等等

3)理想情况下,在构建文件时,我的ajax调用1)仍然同时轮询(并更新div),以便用户开始看到一些进展。

4)下载完成。此时我可以隐藏'进度div',因为它会显示100%。

注意,当然最终会将进度条替换为进度条。

问题是,一旦fileDownload开始,ajax调用1)开始排队,直到4)之后才真正执行!

我认为fileDownload插件使用iframe,我不会想到会在我的主页面阻止ajax调用,但似乎。

希望这是有道理的。感谢有关如何处理此事的任何建议。

1 个答案:

答案 0 :(得分:0)

我遇到了与ASP.NET MVC Web应用程序相同的问题。 就我而言,问题与服务器有关,因为没有两个使用同一会话的请求可以同时运行。该会话在ASP.NET中不是线程安全的。

MVC项目的解决方案是使用[SessionState(SessionStateBehavior.ReadOnly)]属性来装饰控制器。 要在两个操作之间共享变量,请使用线程安全的Cache而不是会话。