更新同一页面不同div内容的问题

erldy 2007-03-07 12:08:30
var xmlHttp;
function creatXMLHttpRequest() {
if(window.ActiveXObject) {
xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
} else if(window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
function startRequest(type,result) {
var queryString="";

//var domain = document.getElementById('domain').value;
queryString = "type=" + type;
creatXMLHttpRequest();
xmlHttp.open("GET","news.php?action=GetNews&"+queryString+"×tamp=" + new Date().getTime(),"true");
xmlHttp.onreadystatechange = handleStateChange;
//xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
xmlHttp.send(null);

function handleStateChange() {
if(xmlHttp.readyState == 1) {
document.getElementById(result).style.cssText = "";
document.getElementById(result).innerHTML = "正导入数据...";
}
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
document.getElementById(result).style.cssText = "";
var allcon = xmlHttp.responseText;
document.getElementById(result).innerHTML = allcon;
}
}
}
}

通过上面代码更新同一页面的DIV:
<div align="left" id="nresult1"><script language="JavaScript">startRequest('XXXX','nresult1');</script></div>

<div align="left" id="nresult2"><script language="JavaScript">startRequest('ZZZZ','nresult2');</script></div>

但是出现的结果有时候是第一个DIV一直显示“正导入数据..”,第二个DIV正常,或者第一个DIV显示的跟第二个DIV一样的内容(本来应该是不一样的),到底是哪里的问题呢?多谢指教!!
...全文
218 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
erldy 2007-03-09
多谢楼上的,问题解决!!
回复
erldy 2007-03-08
没人帮忙啊??
回复
yzh_boy 2007-03-08
这就是javascript的先的问题了,你在同时调用一个函数的时候也就是你的"startRequest" 因为是异步, 你第一次调 用startRequest后还没有得到返的结果就已经开使进得第二次调用了.
简单点就是, 时间差 .
你把<div align="left" id="nresult2"><script language="JavaScript">startRequest('ZZZZ','nresult2');</script></div>

改为<div align="left" id="nresult2"><script language="JavaScript">setTimeout(function(){startRequest('ZZZZ','nresult2');},500)</script></div>
回复
Deckguan 2007-03-08
没有看见你的result在哪?我也是新手!不知道是不是这里有问题!!!
回复
erldy 2007-03-08
好像不是这个原因吧
我改了之后还是一样……
我试过在函数最前面随便alert一些东西,然后内容更新就会正常了,很奇怪……
回复
asdfsadfasdfafa 2007-03-08
///第一个DIV一直显示“正导入数据..”,第二个DIV正常
执行了xmlHttp.readyState == 1
然后执行
xmlHttp.readyState==4情况
因为你用的是2个IF,所以都回执行,并且 第一个IF执行后就算执行到第2个IF(即xmlHttp.readyState==4)第1个IF里面对DIV的操作已经对页面更新过了。

建议用IF---ELSE
并且readyState变化后,不但要更新你想更新的DIV,而且还要注意 另外一个DIV的内容是否也要做相对应的更新




回复
发动态
发帖子
Ajax
创建于2007-09-28

5.2w+

社区成员

Web 开发 Ajax
申请成为版主
社区公告
暂无公告