<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    關于利用dom返回xml亂碼的解決方案

    Posted on 2007-06-01 16:30 姜海龍 閱讀(2365) 評論(0)  編輯  收藏
    在我的項目中,系統要支持多語言環境,所以采用utf-8編碼格式,系統菜單是通過一個action返回一個xml獲得菜單數據進行加載的。
    最初js腳本中采用如下方式進行加載:
    1var xmlDoc = new ActiveXObject("MSXML.DOMDocument");
    2xmlDoc.async = false;
    3xmlDoc.load("sysMemo.do");
    結果返回的xml中文全是亂碼,一直搞不明白是什么原因,該設置的地方也全部設置了。最后通過使用WebFx的一個js類通過xmlhttp的方式解決了這個問題。
    下面這段代碼是WebFx的xmlextras.js中的代碼:
      1     function getDomDocumentPrefix() {
      2        if (getDomDocumentPrefix.prefix)
      3            return getDomDocumentPrefix.prefix;
      4        
      5        var prefixes = ["MSXML2""Microsoft""MSXML""MSXML3"];
      6        var o;
      7        for (var i = 0; i < prefixes.length; i++{
      8            try {
      9                // try to create the objects
     10                o = new ActiveXObject(prefixes[i] + ".DomDocument");
     11                return getDomDocumentPrefix.prefix = prefixes[i];
     12            }

     13            catch (ex) {};
     14        }

     15        
     16        throw new Error("Could not find an installed XML parser");
     17    }

     18    
     19    function getXmlHttpPrefix() {
     20        if (getXmlHttpPrefix.prefix)
     21            return getXmlHttpPrefix.prefix;
     22        
     23        var prefixes = ["MSXML2""Microsoft""MSXML""MSXML3"];
     24        var o;
     25        for (var i = 0; i < prefixes.length; i++{
     26            try {
     27                // try to create the objects
     28                o = new ActiveXObject(prefixes[i] + ".XmlHttp");
     29                return getXmlHttpPrefix.prefix = prefixes[i];
     30            }

     31            catch (ex) {};
     32        }

     33        
     34        throw new Error("Could not find an installed XML parser");
     35    }

     36    
     37    //////////////////////////
     38    // Start the Real stuff //
     39    //////////////////////////
     40    
     41    
     42    // XmlHttp factory
     43    function XmlHttp() {}
     44    
     45    XmlHttp.create = function () {
     46        try {
     47            if (window.XMLHttpRequest) {
     48                var req = new XMLHttpRequest();
     49                
     50                // some versions of Moz do not support the readyState property
     51                // and the onreadystate event so we patch it!
     52                if (req.readyState == null{
     53                    req.readyState = 1;
     54                    req.addEventListener("load"function () {
     55                        req.readyState = 4;
     56                        if (typeof req.onreadystatechange == "function")
     57                            req.onreadystatechange();
     58                    }
    false);
     59                }

     60                
     61                return req;
     62            }

     63            if (window.ActiveXObject) {
     64                return new ActiveXObject(getXmlHttpPrefix() + ".XmlHttp");
     65            }

     66        }

     67        catch (ex) {}
     68        // fell through
     69        throw new Error("Your browser does not support XmlHttp objects");
     70    }
    ;
     71    
     72    // XmlDocument factory
     73    function XmlDocument() {}
     74    
     75    XmlDocument.create = function () {
     76        try {
     77            // DOM2
     78            if (document.implementation && document.implementation.createDocument) {
     79                var doc = document.implementation.createDocument(""""null);
     80                
     81                // some versions of Moz do not support the readyState property
     82                // and the onreadystate event so we patch it!
     83                if (doc.readyState == null{
     84                    doc.readyState = 1;
     85                    doc.addEventListener("load"function () {
     86                        doc.readyState = 4;
     87                        if (typeof doc.onreadystatechange == "function")
     88                            doc.onreadystatechange();
     89                    }
    false);
     90                }

     91                
     92                return doc;
     93            }

     94            if (window.ActiveXObject)
     95                return new ActiveXObject(getDomDocumentPrefix() + ".DomDocument");
     96        }

     97        catch (ex) {}
     98        throw new Error("Your browser does not support XmlDocument objects");
     99    }
    ;
    100    
    101    // Create the loadXML method and xml getter for Mozilla
    102    if (window.DOMParser &&
    103        window.XMLSerializer &&
    104        window.Node && Node.prototype && Node.prototype.__defineGetter__) {
    105    
    106        // XMLDocument did not extend the Document interface in some versions
    107        // of Mozilla. Extend both!
    108        XMLDocument.prototype.loadXML = 
    109        Document.prototype.loadXML = function (s) {
    110            
    111            // parse the string to a new doc    
    112            var doc2 = (new DOMParser()).parseFromString(s, "text/xml");
    113            
    114            // remove all initial children
    115            while (this.hasChildNodes())
    116                this.removeChild(this.lastChild);
    117                
    118            // insert and import nodes
    119            for (var i = 0; i < doc2.childNodes.length; i++{
    120                this.appendChild(this.importNode(doc2.childNodes[i], true));
    121            }

    122        }
    ;
    123        
    124        
    125        /*
    126         * xml getter
    127         *
    128         * This serializes the DOM tree to an XML String
    129         *
    130         * Usage: var sXml = oNode.xml
    131         *
    132         */

    133        // XMLDocument did not extend the Document interface in some versions
    134        // of Mozilla. Extend both!
    135        XMLDocument.prototype.__defineGetter__("xml"function () {
    136            return (new XMLSerializer()).serializeToString(this);
    137        }
    );
    138        Document.prototype.__defineGetter__("xml"function () {
    139            return (new XMLSerializer()).serializeToString(this);
    140        }
    );
    141    }

    下面是我調用的過程:
    1var xmlHttp = XmlHttp.create();
    2            xmlHttp.open("GET""showMenu.do"false);    // async
    3            xmlHttp.onreadystatechange = function () {
    4                if (xmlHttp.readyState == 4{
    5                    getMenuTree(xmlHttp.responseXML);
    6                }

    7            }
    ;
    8            xmlHttp.send(null);

    這段代碼要包含在一個方法中。

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    posts - 9, comments - 19, trackbacks - 0, articles - 1

    Copyright © 姜海龍

    主站蜘蛛池模板: 久久久久久久久久久免费精品| 性xxxxx大片免费视频| 亚洲一区无码精品色| 四虎影视无码永久免费| 亚洲毛片无码专区亚洲乱| 国产色爽免费视频| 在线看片免费人成视频播| 亚洲人成色777777精品| 亚洲中文字幕在线第六区| 午夜国产精品免费观看| 一进一出60分钟免费视频| 亚洲成人网在线播放| 亚洲精品无码永久在线观看| 亚洲免费网站在线观看| 四虎成人精品国产永久免费无码| 中文字幕亚洲免费无线观看日本 | 免费看国产一级特黄aa大片| 99久久99这里只有免费的精品| 亚洲人成777在线播放| 亚洲中文字幕无码爆乳AV| 成人免费毛片观看| 日韩精品免费视频| 一区二区三区视频免费| 亚洲成a人片在线看| 亚洲av中文无码乱人伦在线咪咕| 永久免费毛片手机版在线看| 在线成人精品国产区免费| 男男gay做爽爽的视频免费| 亚洲国产高清视频在线观看| 亚洲中文字幕无码爆乳AV| 日韩视频在线免费| 无码精品A∨在线观看免费| 国产在线精品一区免费香蕉 | 免费无码国产在线观国内自拍中文字幕| 久久亚洲国产成人精品性色| 亚洲美女在线国产| 国产极品美女高潮抽搐免费网站| 黄网站色在线视频免费观看| 免费观看成人久久网免费观看| 欧洲乱码伦视频免费国产| 亚洲AV永久无码精品一福利|