我正在使用 John Culviner 的(很棒的)jquery.fileDownload 插件。它有下载完成时的回调,但我的文件需要大约 30 秒才能生成(大量后端处理)。
我想通知用户当前的进度。
作为原型,我正在尝试这个:
1) (在文件下载开始之前) - 每秒重复轮询一个 url ($.get(...))。它返回完成百分比并更新页面上的 div(此时为 0%)。
2) 启动 fileDownload 脚本(此时,1)正在检查的服务器端变量开始更新,例如 2% 完成.... 10% 完成....等等
3) 理想情况下,在构建文件时,我在 1) 中的 ajax 调用仍在同时轮询(并更新 div),以便用户开始看到一些进展。
4) 下载完成。此时我可以隐藏“进度 div”,因为它将显示 100%。
注意,当然,进度 div 最终将被进度条取代。
问题是,一旦 fileDownload 开始,1) 中的 ajax 调用就开始排队,直到 4) 之后才真正执行!
我认为 fileDownload 插件使用了一个 iframe,我认为它会阻止我主页中的 ajax 调用,但它似乎是这样。
希望这是有道理的。感谢您提供有关如何处理此问题的任何建议。