Microsoft XMLDom读取数据原来默认是异步的! [转]

本文介绍了在Web服务器环境中使用XML和XSL进行转换时遇到的同步加载问题。详细解释了如何通过监听DOM的onreadystatechange事件并确保readyState为4来避免The data necessary to complete this operation is not yet available.错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转于 http://blog.youkuaiyun.com/firewing/article/details/323923
今天做一很简单的功能,就是将xml数据用xsl转换一下而已。以前一直都没注意xmldom获取数据默认是异步的方式的。每次都是load完xml数据以后就直接调用transfer了。之前因为一直都是在本地调试,没有部署在Web服务器上,但是今天部署上去后发现transfer时经常报"The data necessary to complete this operation is not yet available. "错误。郁闷了好久,才发现原来Dom.load(dataSrc)里面应用的数据源由于速度较低,在transfer之前都还没有load完。查了半天程序,因为transfer是在load后面的一位Dom如果没有load完的话肯定不会执行转换,而且尝试过直接在IE上打开这些XML文件和XSL文件一点问题都没有。于是赶快查MSDN,发现async property of a DOMDocument默认是true的。所以load方法执行了之后马上就返回了,这时候不一定会已经把我需要的xml读取完成,造成了上面的错误。郁闷。

后来把Transfer的动作放在了onreadystatechange事件里面,判断readyState等于4才开始作转换。终于搞定了问题。

感慨一下:基础知识不扎实啊,对自己用到的东西不了解啊!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值