这是我之前询问的一个问题的后续。使用Ajax更新代码隐藏进程的运行进度
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>
目前检查()开始在网页加载后立即运行。我希望只有在点击事件发生后才能调用它。如果我在click事件中定义了Check(),它不会识别setInterval,并且只会检查是否再次单击该按钮。这不是一个大问题,因为我认为脚本可以正常运行。它将只显示“不搜索”字符串。不幸的是,当文件被更新(并且我检查它是),页面不会显示内容,因为它会得到响应。它只是保持不变,然后一旦代码隐藏完成,它将重置为默认设置。谁能告诉我为什么页面没有更新?
编辑:忘记提及点击事件有一个onclick分配给C#代码隐藏,做长功能。我不知道是否可以运行JavaScript Ajax函数以及C#代码隐藏。 Ajax调用的async = true,但脚本部分不是平行于代码隐藏的权利?
再次编辑:我改变了脚本以向上计数。我希望它继续计数,而隐藏代码却做到了这一点,但一旦你点击按钮,它就会停止。代码隐藏完成后,重新启动计数。为什么计数不继续?我预计一旦代码隐藏完成后它会重新启动,但我认为它会继续计数。
你能解释一点吗?如何在不调用click事件的情况下单击按钮时调用setInterval()? $(文件)。就绪(函数(){ $( “#uploadbutton”)点击(函数(){ 的setInterval( “检查()”,1000); }); }); 这是我尝试过的一种方式,但它调用按钮单击事件。这样没有任何反应。 – spots
如果我将Check()更改为向上计数,它就会起作用。由于代码隐藏运行页面计数。任何想法为什么当Ajax函数被调用时不起作用? – spots
评论中的JavaScript看起来很好,它在点击按钮时运行匿名函数,这会启动Click()函数的时间间隔。有没有原因你不使用jQuery的一部分的ajax库?无论使用哪种浏览器,它都会处理ajax调用。此外,不要设置计时器(因为ajax响应可能需要一段时间才会回来),请将代码设置为在再次进行ajax调用之前等待ajax调用返回(它们可以开始与方式重叠你拥有了它)。 –