在JS中用调用xsl的小问题

今天些AJAX程序时,出了个小问题,想利用xsl显示返回的xml,但是每当调用js的transformNode时总出错,
提示 "所需要的数据还没有准备好"
当时我以为时requestObj(XHR对象)的readyState还没完成,但是在这之前已经有了对readyState的判断,于是错误
定位在docStyle这里,经检查样式文件没问题,最后锁定为transformNode执行的时候 doc 还没有把数据加载完全.

None.gif var  doc  =   new  ActiveXObject( " MSXML2.DOMDocument.3.0 " ); 
None.gif                
None.gifdoc.loadXML(requestObj.responseText);
None.gif                  
None.gif
var  docStyle  =   new  ActiveXObject( " MSXML2.DOMDocument.3.0 " );
    docStyle.load("data.xslt");
None.gifdoc.transformNode(docStyle); //这里出错

后来发现dom也有个onreadystatechange和readySate属性,不过我用了另外一个方法
用了一个叫自由线程的对象,感觉有点像异步.
虽然麻烦,不过其好处是可以往xsl里加参数
 1 None.gif                 var  docStyle  =   new  ActiveXObject( " MSXML2.FreeThreadedDOMDocument " );
 2 None.gif                 docStyle.async  =   false ;   
 3 None.gif                 docStyle.load( " data.xslt " );
 4 None.gif                 
 5 None.gif                  var  docTemplate  =   new  ActiveXObject( " MSXML2.XSLTemplate " );
 6 None.gif                 docTemplate.stylesheet  =  docStyle;
 7 None.gif                
 8 None.gif                  var  processor  =  docTemplate.createProcessor();
 9 None.gif                 
10 None.gif                 processor.input  =  doc;
                         processor.addParameter("index", "2");//加参数
11 None.gif                 processor.transform();       
12 None.gif                  var  res  =  processor.output;
13 None.gif                 divContent.innerHTML  =  res;

转载于:https://www.cnblogs.com/shenba/archive/2007/07/07/809857.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值