这段代码有点不明白......

IPOz 2003-10-09 04:57:35
function check_alarm()
{
var xmlHttp = XmlHttp.create();
xmlHttp.open("GET", "/omnet-web/monitorservlet?do=new", true);
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4) {
if(xmlHttp.responseText == "1") {
flag.style.visibility = "visible";
}
else {
flag.style.visibility = "hidden";
}
setTimeout("check_alarm()",1000);
}
};

// call in new thread to allow ui to update
window.setTimeout(function () {
xmlHttp.send(null);
}, 10);
}

xmlHttp.responseText一直都是"0"(其实服务器已经是"1"),但如果注释掉
window.setTimeout(function () {
xmlHttp.send(null);
}, 10);
xmlHttp.responseText将很快为“1”,但check_alarm()只能调用一次,即setTimeout()好象不起作用?!


请大家解释一下这段代码,谢谢!
...全文
58 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
IPOz 2003-10-10
  • 打赏
  • 举报
回复
同步模式也不够灵敏,好象xmlHttp从cache取,并没有真去服务端?!这下我明白“url地址后面&一个随机数”的意思了,应该是强迫IE去服务端取数,对吧?

除了这个方式,还有其它方法吗?
IPOz 2003-10-10
  • 打赏
  • 举报
回复
>>给url地址后面&一个随机数

不明白!但改成同步模式后就可以了:

function get_alarm() {
var xmlHttp = XmlHttp.create();
xmlHttp.open("GET", "/omnet-web/monitorservlet?do=new", false);
xmlHttp.send();

window.status = xmlHttp.responseText + "---" + Math.random();
if(xmlHttp.responseText == "1") {
flag.style.visibility = "visible";
}
else {
flag.style.visibility = "hidden";
}
setTimeout("get_alarm()",1000);
}

为什么异步模式不行呢?
yacus 2003-10-10
  • 打赏
  • 举报
回复
给url地址后面&一个随机数
IPOz 2003-10-09
  • 打赏
  • 举报
回复
目前的现象是,check_alarm() 不断执行,但xmlHttp.responseText 总是为“0” !!!
除第一次外,好象xmlHttp.open("GET", "/omnet-web/monitorservlet?do=new", true);
以后并没有去访问服务器?!

也就是在异步模式下如何让xmlHttp从服务器取数?

regards!

87,988

社区成员

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

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