zoukankan      html  css  js  c++  java
  • 在JS中用调用xsl的小问题

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

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

    后来发现dom也有个onreadystatechange和readySate属性,不过我用了另外一个方法
    用了一个叫自由线程的对象,感觉有点像异步.
    虽然麻烦,不过其好处是可以往xsl里加参数
     1                 var docStyle = new ActiveXObject("MSXML2.FreeThreadedDOMDocument");
     2                 docStyle.async = false;   
     3                 docStyle.load("data.xslt");
     4                 
     5                 var docTemplate = new ActiveXObject("MSXML2.XSLTemplate");
     6                 docTemplate.stylesheet = docStyle;
     7                
     8                 var processor = docTemplate.createProcessor();
     9                 
    10                 processor.input = doc;
                             processor.addParameter("index", "2");//加参数
    11                 processor.transform();       
    12                 var res = processor.output;
    13                 divContent.innerHTML = res;
  • 相关阅读:
    OSPF协议原理
    TCPDUMP抓包方法
    latex:画图
    FrankWolf算法
    Three20 Navigation 迁移到TTTableViewController一直显示加载中的解决办法
    ipa在iTunes中没有图标
    iPhone应用提交AppStore时Application failed codesign verification问题的解决
    XCode4.5 iOS6 SDK 提交AppStore Validate各种错误的解决
    1.forEach():遍历数组,并为每个元素调用传入的函数; 举例:
    CSS实现单行、多行文本溢出显示省略号(…)
  • 原文地址:https://www.cnblogs.com/shenba/p/809857.html
Copyright © 2011-2022 走看看