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

在JS中用调用xsl的小问题var doc = new ActiveXObject("MSXML2.DOMDocument.3.0"); 
在JS中用调用xsl的小问题                
在JS中用调用xsl的小问题doc.loadXML(requestObj.responseText);
在JS中用调用xsl的小问题                  
在JS中用调用xsl的小问题
var docStyle = new ActiveXObject("MSXML2.DOMDocument.3.0");
    docStyle.load("data.xslt");
在JS中用调用xsl的小问题doc.transformNode(docStyle); //这里出错

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

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-12-17
  • 2022-12-23
  • 2021-09-09
  • 2021-07-21
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-02-03
  • 2021-11-11
  • 2022-12-23
  • 2022-01-07
  • 2021-05-28
  • 2022-12-23
相关资源
相似解决方案