我想实现一个服务器端下载过程,向客户端报告其进度。 我在.aspx网站类中定义了一个全局变量:
Public progressStatus As Integer
然后启动一个新的Thread来下载List中的图像,这也改变了全局变量的值:
For Each imageUrl In imageFiles
currentUrlCount = currentUrlCount + 1
indexOfUrlSplit = imageUrl.LastIndexOf("/")
localFilename = imageUrl.Substring(indexOfUrlSplit + 1)
If localFilename <> "" Then
httpClient.DownloadFile(url, localImage)
progressStatus = CInt((currentUrlCount / totalUrlCount) * 100)
End If
Next
我使用SetIntveral Javascript方法每2秒检查一次全局变量的值:
var progStat;
setInterval(function() {
progStat = <%=progressStatus%>;
document.write(progStat + "\n");
}, 2000);
通过调试,我检查了后面的代码中的全局变量是否正确计算和更改。无论如何,Javascript保持初始值为0.
如果有人可以帮我解决这个问题,我会很高兴的!
非常感谢大家,
最高
答案 0 :(得分:0)
使用这样的语法时:
progStat = <%=progressStatus%>;
progressStatus值被检索一次,并在呈现页面时转换为字符串。那时值为0.每次调用该脚本时都不会从服务器检索。
这意味着您网页上呈现的javascript函数如下所示:
progStat = 0;
当你在客户端多次调用该函数时,它不会因为页面没有被重新渲染而改变。
答案 1 :(得分:0)
您需要使用Ajax调用来从服务器检索值。将调用结果与JQuery一起使用,然后更新UI