(採用ajax非同步讀取法)讀取server端xml格式資料
必須在IIS以http://localhost/...的方式來執行網頁
(下載personnel.xml)
注意:大家輸入john試看看
1.注意:
(1).採用ajax非同步讀取法,即時檢查user輸入的帳號名稱是否在主機已經有人已經註冊了,此時textbox文字欄位檢查事件有兩種寫法:
A.<input type="text" onkeyup="show01(this.value)" />
這個只要輸入每個字母之後,就會即時傳到主機去做檢查
B.<input type="text" onblur="show01(this.value)" />
onblur 事件會在對象失去焦點時發生。例如,在文字欄位txt01內輸入完畢後,離開文字欄位,然後在外面任何一個地方點一下,此時txt01就已經失去焦點,就會啟動onblur事件
(1).讀取server端xml資料:
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","xml/person.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
(2).讀取的XML(xmlDoc)如何抓到第2位學生電話tel
第1位學生的姓名:xmlDoc.getElementsByTagName("name")[0].childNodes[0].nodeValue
第1位學生的電話:xmlDoc.getElementsByTagName("tel")[0].childNodes[0].nodeValue
第2位學生的電話:xmlDoc.getElementsByTagName("tel")[1].childNodes[0].nodeValue
(3).讀取的XML(xmlDoc)如何抓到所有學生student的結構資料
man=xmlDoc.getElementsByTagName("student");
*第3位學生的電話:man[2].getElementsByTagName("tel")[0].childNodes[0].nodeValue
*印出所有學生student的姓名:
for (i=0;i<man.length;i++)
{
document.write(man[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);
}
(3).表格的標籤語法:<tr列,<td欄
<table border=1>
<tr>
<td>學號</td><td>姓名</td><td>電話</td><td>電子郵件</td>
</tr>
5.xml字串與xmlDoc節點變數彼此轉換的公式
//將xml字串轉成xmlDoc節點變數:
xmlDoc =parser.parseFromString(txt,"text/xml");
//將字串轉成xmlDoc節點變數
if (window.DOMParser)
{
parser=new DOMParser();
xmlDoc=parser.parseFromString(txt,"text/xml");
}
else // Internet Explorer
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.loadXML(txt);
} |
//將xml物件轉成xml字串:
xmlString =(new XMLSerializer()).serializeToString(xmlDoc)
//將xml物件轉成string文字
if (window.ActiveXObject) { // for IE 瀏覽器
txt01.value = xmlDoc.xml;
} else { //chrome, firefox,Opera各種瀏覽器
txt01.value = (new XMLSerializer()).serializeToString(xmlDoc);
} |
(5).person.xml結構
var stu = new Array(); //一維陣列 物件
<?xml version="1.0" standalone="yes"?>
<person>
<student>
<id_no>9096036</id_no>
<name>蔡文龍</name>
<tel>04-32345671</tel>
<mail>lung67@giga.net.tw</mail>
</student>
<student>
<id_no>9096001</id_no>
<name>許百宏</name>
<tel>04-12345671</tel>
<mail>em@ms37.hient.net</mail>
</student>
<student>
<id_no>9096002</id_no>
<name>林宜美</name>
<tel>04-78955671</tel>
<mail>em@ms37.yam.net</mail>
</student>
<student>
<id_no>9096003</id_no>
<name>賴玲英</name>
<tel>049-6345671</tel>
<mail>pc@ms56.hient.net</mail>
</student>
<student>
<id_no>9096004</id_no>
<name>丁勝勇</name>
<tel>02-12344471</tel>
<mail>em@ms37.hient.seed.tw</mail>
</student>
<student>
<id_no>9096005</id_no>
<name>劉曉珍</name>
<tel>049-1345671</tel>
<mail>yy@ms45.hient.net</mail>
</student>
<student>
<id_no>9096006</id_no>
<name>李逢源</name>
<tel>06-11235671</tel>
<mail>et@ms37.yam.net</mail>
</student>
<student>
<id_no>9096007</id_no>
<name>卓水信</name>
<tel>02-17896671</tel>
<mail>em@ms37.pchome.net</mail>
</student>
<student>
<id_no>9096008</id_no>
<name>謝沂臻</name>
<tel>049-1234571</tel>
<mail>em@ms56.pchome.net</mail>
</student>
<student>
<id_no>9096009</id_no>
<name>徐志宏</name>
<tel>04-15465671</tel>
<mail>pp@ms69.hient.net</mail>
</student>
</person>