運用AJAX技術解析XML檔案

來源:互聯網
上載者:User

      這是數周前寫的一個關於javascript程式了。”溫故而知新”今天拿出來,溫習溫習,加深印象!其中三段關於AJAX的代碼可以說是通用代碼。

var xmlhttp;

//根據判斷的瀏覽器的不同類型建立XMLHttpRequest對象
function createXMLHttpRequest(){
    if (window.ActiveXObject) {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else
        if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
        }
}

//發起非同步請求
function startAsyRequest(){
    createXMLHttpRequest();//調用createXMLHttpRequest()XMLHttpRequest對象
    xmlhttp.onreadystatechange = handleStateChange;
    xmlhttp.open("GET", "bbc.xml?timespan=" + new Date().getTime(), true);
    xmlhttp.send(null);
}

//XMLHttpRequest對象的readystate值變化時的處理函數
function handleStateChange(){
    if (xmlhttp.readyState == 4) {
        if (xmlhttp.status == 200) {
            bbcAnalyze();//調用解析請求的XML檔案的函數
        }
        else {
            alert("請檢查web伺服器是否運行正常!");
        }
    }
}

//解析(利用XML DOM)請求的XML檔案並利用HTML DOM以表格形式呈現資料
function bbcAnalyze(){

    xmlDoc = xmlhttp.responseXML;
   var table1 = document.getElementById("tb1");

    //alert(xmlDoc);
    if (xmlDoc) {
        var countryNodes = xmlDoc.getElementsByTagName("Country");
        //alert(countryNodes.length);
        for (var i = 0; i < countryNodes.length; i++) {
            var t1=document.createElement("tr");
            var region = countryNodes[i].getAttribute("Region");
            var td1 = document.createElement("td");
            var newpnode1 = document.createTextNode(region);
            td1.appendChild(newpnode1);
            t1.appendChild(td1);
            var name = xmlDoc.getElementsByTagName("Name")[i].childNodes[0].nodeValue;
            var td2 = document.createElement("td");
            var newpnode2 = document.createTextNode(name);
            td2.appendChild(newpnode2);
            t1.appendChild(td2);
            var area = xmlDoc.getElementsByTagName("Area")[i].childNodes[0].nodeValue;
            var td3 = document.createElement("td");
            var newpnode3 = document.createTextNode(area);
            td3.appendChild(newpnode3);
            t1.appendChild(td3);
            var population = xmlDoc.getElementsByTagName("Population")[i].childNodes[0].nodeValue;
            var td4 = document.createElement("td");
            var newpnode4 = document.createTextNode(population);
            td4.appendChild(newpnode4);
            t1.appendChild(td4);
            if (xmlDoc.getElementsByTagName("GDP")[i].hasChildNodes()) {
                var gdp = xmlDoc.getElementsByTagName("GDP")[i].childNodes[0].nodeValue;
                var newpnode5 = document.createTextNode(gdp);
                td5 = document.createElement("td");
                td5.appendChild(newpnode5);
                t1.appendChild(td5);
            }
            else {
                gdp = "";
                td6 = document.createElement("td");
                var newpnode6 = document.createTextNode(gdp);
                td6.appendChild(newpnode6);
                t1.appendChild(td6);
            }
            table1.appendChild(t1);
            //alert(table1);
        }
    }
    else {
        alert("xmlDoc檔案為空白,操作失敗!");
    }
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.