求救了,怎么解决dom+js加载xml出现ie无反映
问题如上面:
我做一个页面,当点某个连接后,自动运行一个js,远程调用一个xml,然后改变当前页面。语句如下:
set xml=createobject("msxml.domdocument")
xml.async="false"
xml.load "http://www.aaa.com/aa.asp?id=1"
现在调用完全没有问题。但是每次点击后。就ie出现假死,什么都不能动,已经考虑到不是计算机问题。大约等一会儿(一般我xml数据在100来行),估计xml加载完全了。就好了。
我想请教高手。有没有一个比较好的方案。解决这个问题呢。我构想两种方法,1,预先先加载好xml 2,直接改代码。
请高手指教!
问题点数:20、回复次数:5Top
1 楼cds27(http://blog.csdn.net/cds27/)回复于 2006-03-16 09:20:01 得分 0
改成异步就可以了。由于是同步的操作,XMLDOM会等到数据读取完成,才将控制权还给IE,所以出现假死现象。
这个现象要考虑的2个因素:
1、网络的传输速度。
2、ASP处理数据的速度。
如果不能在控制上述2个因素,那么只能采用异步操作。
下面是一个异步的例子:
<script>
var xmldoc;
function Load()
{
xmldoc = new ActiveXObject("MSXML2.DOMDocument.4.0");
xmldoc.onreadystatechange = CheckState;
xmldoc.resolveExternals = False;
xmldoc.load(URL.value);
}
function CheckState()
{
var state = xmldoc.readyState;
RESULTS.innerHTML += "readyState = " + state + "<BR>"
if (state == 4)
{
var err = xmldoc.parseError;
if (err.errorCode != 0)
RESULTS.innerHTML += err.reason + "<BR>"
else RESULTS.innerHTML +="success" + "<BR>"
}
}
</script>
注:只要不设置xml.async=false,就默认为异步操作。Top
2 楼wangson0050(王松)回复于 2006-03-16 11:12:23 得分 0
我测试了。
我的xml数据是几百K时候。这个语句设置同步或者异步都没有多大用途的啊。感觉同步死的时间更长些。异步只是加载时候死一下。同步是半天没有反应。当翻页时候,鼠标变为手型了。这个真的没有办法吗?
请高手赐教了!Top
3 楼cds27(http://blog.csdn.net/cds27/)回复于 2006-03-20 11:12:46 得分 0
“异步只是加载时候死一下”指的是接收到数据的时候吗?
如果是的话,针对这个问题,有两种优化办法:
一,更新机器。
二,优化算法。Top
4 楼DeluxWorld(曾经的你)回复于 2006-03-20 12:45:59 得分 0
"xml数据在100来行"
应该说数据量不大,如果是同步的话,对IE影响也是微乎其微;
问题可能在于远程asp的响应速度太慢~
Top
5 楼jacklkc()回复于 2006-05-12 21:33:14 得分 0
xml_javascript三级联动
http://community.csdn.net/Expert/topic/4745/4745332.xml?temp=.8122217
Xml_javascript分页
http://community.csdn.net/Expert/topic/4740/4740386.xml?temp=.6502954Top





