从Thread后面的代码更新Javascript变量

时间:2014-06-02 09:47:42

标签: asp.net vb.net

我想实现一个服务器端下载过程,向客户端报告其进度。 我在.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.

如果有人可以帮我解决这个问题,我会很高兴的!

非常感谢大家,

最高

2 个答案:

答案 0 :(得分:0)

使用这样的语法时:

progStat = <%=progressStatus%>;

progressStatus值被检索一次,并在呈现页面时转换为字符串。那时值为0.每次调用该脚本时都不会从服务器检索。

这意味着您网页上呈现的javascript函数如下所示:

progStat = 0;

当你在客户端多次调用该函数时,它不会因为页面没有被重新渲染而改变。

答案 1 :(得分:0)

您需要使用Ajax调用来从服务器检索值。将调用结果与JQuery一起使用,然后更新UI