用AJAX每隔一段时间进行询问,是个小问题,请大家帮忙(举手之劳)

bryantd 2007-10-12 11:24:47
我的设计是这样的:当用户在点击一个按钮后,进入到我现在这个页面,同时在后台开启一个线程执行远程任务,任务执行完毕后将一个结果文件写入某个目录下。
这个页面是个等待页面,在这个页面上有一个等代提示画面,我想用Ajax进行这样的操作:每隔3秒钟向服务器发出请求,看看这个结果文件是否生成,如果生成,就跳转到另外一个页面,如果超过一定询问次数,就自动跳转到一个默认页面。我的程序是这样写的:
<script language="javascript">
var xmlHttp;

function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}

function startRequest() {
createXMLHttpRequest();
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.open("GET", "结果文件的URL", true);
xmlHttp.send(null);
}

function check() {
//询问5遍
for (i = 1; i <= 5; i++) {
setTimeout("startRequest()", 3000)
}
//如果询问5遍后仍没有跳转,则跳转至默认页面
location.href = "http://www.sohu.com";
}

function handleStateChange() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
if (xmlHttp.responseText != '') {
//如果结果文件已经生成,则跳转入指定页面
location.href = "http://www.csdn.net";
}
}
}
}
</scrupt>

我在<body onload="">里面触发该事件:<body onload="check();">

但是我这样做程序执行起来好像不太对劲,请各位高手帮我解决一下。谢谢。
...全文
155 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
iuhxq 2007-10-12
  • 打赏
  • 举报
回复
myw=setInterval(showRecord,20);//每20s刷新一次

clearInterval(myw); //清除刷新
SworderAndy 2007-10-12
  • 打赏
  • 举报
回复
check()有点问题,for循环用不了几毫秒就执行完了,还没来的及发送第二次,就转到http://www.sohu.com了.
应该这样:
1.设置一个全局变量var count=0;
2.将check()函数改成只有一句:setTimeout("startRequest()", 3000);
3.将handleStateChange()函数改成:
function handleStateChange() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
if (xmlHttp.responseText != ' ') {
//如果结果文件已经生成,则跳转入指定页面
location.href = "http://www.csdn.net";
}else{
count++;
if(count>=5)
location.href = "http://www.sohu.com";
}
}
}
}

cqhunter 2007-10-12
  • 打赏
  • 举报
回复
myw=setInterval(showRecord,20);//每20s刷新一次

clearInterval(myw); //清除刷新

52,787

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧