<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 姜海龍 閱讀(2358) 評論(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 © 姜海龍

    主站蜘蛛池模板: 色吊丝免费观看网站| 丁香婷婷亚洲六月综合色| 日本免费精品一区二区三区| 在线视频免费观看www动漫| 亚洲av无码不卡久久| 日日麻批免费40分钟日本的| 亚洲高清在线播放| 三年片在线观看免费观看大全动漫| 在线精品亚洲一区二区小说| 一区二区三区免费在线视频| 亚洲人成无码网WWW| 成在人线av无码免费高潮水| 亚洲色无码专区在线观看| 久久国产精品国产自线拍免费| 亚洲av无码乱码国产精品| 永久免费视频网站在线观看| 亚洲人成77777在线观看网| 四虎成人免费网址在线| 香蕉视频免费在线播放| 亚洲精品国产精品乱码不99| 久久99青青精品免费观看| 亚洲丰满熟女一区二区v| 日韩免费观看一级毛片看看| 牛牛在线精品观看免费正| 亚洲国产成人高清在线观看| 99久久人妻精品免费二区| 亚洲精品一二三区| 亚洲精品国产日韩无码AV永久免费网| 国产成人AV免费观看| 亚洲人精品亚洲人成在线| 高清在线亚洲精品国产二区| 日本人成在线视频免费播放| 亚洲人成在线播放| 亚洲不卡AV影片在线播放| 毛片无码免费无码播放| 亚洲欧美精品午睡沙发| 亚洲小说区图片区另类春色| 午夜福利不卡片在线播放免费| 日本一区二区三区免费高清在线| 婷婷亚洲久悠悠色悠在线播放| 最近中文字幕无吗免费高清|