【发布时间】:2023-04-07 01:51:01
【问题描述】:
这是对我之前提出的问题的跟进。
Update a Web Page as a Process Runs
我希望网页显示进程正在使用 Ajax 运行的阶段。在后面代码中的每一步之后,文件都会被一些文本覆盖,指示刚刚发生的事情。我希望网页定期发送对该文件的请求并使用 setInterval 或 setTimeout 显示其内容。按下按钮后,网页开始其请求周期,服务器开始其耗时的操作。
我现在拥有的……
周期性请求的脚本:
<script type="text/javascript">
var d = setInterval("Check()", 3000);
function Check() {
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
}
else {// code for IE6, IE5
alert("get chrome");
}
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4) {
document.getElementById("s").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "temp/test.txt", true);
xmlhttp.send();
}
/*$(document).ready(function () {
$("#uploadbutton").click(Check());
});*/
</script>
目前 Check() 在页面加载后立即开始运行。我希望它只在点击事件发生时被调用。如果我在 click 事件中定义 Check() ,它不会识别 setInterval 并且只会检查我是否再次单击该按钮。这不是一个大问题,因为我认为让脚本运行就可以了。它只会显示一个“不搜索”字符串。不幸的是,随着文件的更新(我检查过它是),页面在获得响应时不会显示内容。它只是保持不变,然后一旦代码隐藏完成,它就会重置为默认设置。谁能告诉我为什么页面没有更新?
编辑:忘了提到 click 事件有一个 onclick 分配给执行 long 功能的 C# 代码隐藏。我不知道我是否可以运行 javascript Ajax 函数和 C# 代码隐藏。 Ajax 调用具有 async = true,但脚本部分未与代码隐藏并行运行,对吗?
再次编辑:我将脚本更改为向上计数。我希望它在代码隐藏完成它的事情时继续计数,但是一旦你按下按钮它就会停止。一旦代码隐藏完成,它就会重新开始计数。为什么计数不继续?我希望它在代码隐藏完成后重新启动,但我认为它会继续计数。
【问题讨论】:
标签: c# javascript ajax progress-bar