從屌絲到架構(gòu)師的飛越(JavaScript篇)-JavaScript Ajax解析XML

一、介紹

這節(jié)課呢,我們來了解的是Ajax解析XML,

AJAX 可用來與 XML 文件進(jìn)行交互式通信。

二、知識點(diǎn)介紹

1、ajax XML實(shí)例

2、ajax服務(wù)器頁面

三、上課對應(yīng)視頻的說明文檔

1、AJAX XML 實(shí)例

下面的例子將演示網(wǎng)頁如何使用 AJAX 來讀取來自 XML 文件的信息:

實(shí)例解釋 - loadXMLDoc() 函數(shù)

當(dāng)用戶點(diǎn)擊上面的“獲得 CD 信息”這個按鈕,就會執(zhí)行 loadXMLDoc() 函數(shù)。

loadXMLDoc() 函數(shù)創(chuàng)建 XMLHttpRequest 對象,添加當(dāng)服務(wù)器響應(yīng)就緒時執(zhí)行的函數(shù),并將請求發(fā)送到服務(wù)器。

當(dāng)服務(wù)器響應(yīng)就緒時,會構(gòu)建一個 HTML 表格,從 XML 文件中提取節(jié)點(diǎn)(元素),最后使用已經(jīng)填充了 XML 數(shù)據(jù)的 HTML 表格來更新 txtCDInfo 占位符:

function loadXMLDoc(url)

{

var xmlhttp;

var txt,xx,x,i;

if (window.XMLHttpRequest)

{// code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp=new XMLHttpRequest();

}

else

{// code for IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

xmlhttp.onreadystatechange=function()

{

if (xmlhttp.readyState==4 && xmlhttp.status==200)

{

txt="<table border='1'><tr><th>Title</th><th>Artist</th></tr>";

x=xmlhttp.responseXML.documentElement.getElementsByTagName("CD");

for (i=0;i<x.length;i++)

{

txt=txt + "<tr>";

xx=x[i].getElementsByTagName("TITLE");

{

try

{

txt=txt + "<td>" + xx[0].firstChild.nodeValue + "</td>";

}

catch (er)

{

txt=txt + "<td> </td>";

}

}

xx=x[i].getElementsByTagName("ARTIST");

{

try

{

txt=txt + "<td>" + xx[0].firstChild.nodeValue + "</td>";

}

catch (er)

{

txt=txt + "<td> </td>";

}

}

txt=txt + "</tr>";

}

txt=txt + "</table>";

document.getElementById('txtCDInfo').innerHTML=txt;

}

}

xmlhttp.open("GET",url,true);

xmlhttp.send();

}

2、AJAX 服務(wù)器頁面

上面這個例子中使用的服務(wù)器頁面實(shí)際上是一個 XML 文件,名為 "cd_catalog.xml"。

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<style>

table,th,td {

border : 1px solid black;

border-collapse: collapse;

}

th,td {

padding: 5px;

}

</style>

</head>

<body>

<h1>XMLHttpRequest 對象</h1>

<button type="button" onclick="loadXMLDoc()">獲取我收藏的 CD</button>

<br><br>

<table id="demo"></table>

<script>

function loadXMLDoc() {

var xhttp = new XMLHttpRequest();

xhttp.onreadystatechange = function() {

if (this.readyState == 4 && this.status == 200) {

myFunction(this);

}

};

xhttp.open("GET", "cd_catalog.xml", true);

xhttp.send();

}

function myFunction(xml) {

var i;

var xmlDoc = xml.responseXML;

var table="<tr><th>Artist</th><th>Title</th></tr>";

var x = xmlDoc.getElementsByTagName("CD");

for (i = 0; i <x.length; i++) {

table += "<tr><td>" +

x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue +

"</td><td>" +

x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue +

"</td></tr>";

}

document.getElementById("demo").innerHTML = table;

}

</script>

</body>

</html>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容