2012-06-20 42 views
1

我有一个任务可以提取文件中的zip文件:Update.asp 如何在index.asp任务启动后更新jquery进度条。Ajax:获取请求状态并更新jProgressBar

我发现了一个在index.asp上使用2个ajax调用的解决方案。一个开始的任务与update.asp,另一个是得到session("progress_status")此会话更改时每提取文件完成对update.asp

<% 
session("progress_status") = 0 
'file 1 extracted 
session("progress_status") = 50 
'file 2 extracted 
session("progress_status") = 100 
%> 

问题是,当第一个Ajax调用开始,第二AJAX调用悬而未决直到第一次调用结束。

my ajax calls

回答

0

您所遇到的问题是,ASP处理器将只处理一个脚本,在一个特定的时间会话。因此,您尝试获取进度的asp脚本调用将排在执行提取的asp​​脚本之后。

这是我推荐你这样做的:假的。您对提取页面发出ajax请求。虽然它提取你有一个纯粹的JavaScript驱动的进度条,使用计时器。给它一些缓解,以便看起来一开始进展得非常快,但随后呈指数级放缓。当ajax请求完成时,您可以在删除之前简单地显示进度条已完成。

如果您可以获取zip的原始大小,则可以使用该数字来改善伪造的进度条与现实之间的匹配。如果这样的提取经常发生,可以通过记录一些统计数据来提取各种压缩文件,以获得一些味道时间与字节的比率,这可以进一步考虑这一点。

最终你的用户需要温暖的模糊感觉,发生了什么事情,以及上述的成果。