我是XML新手,已經在w3schools網站上做了一些教程。XMLHttpRequest responseText不包括所有的XML
我一直在玩這個教程found here. 這種相互作用與XML found here.
的XML的一個片段:
<CATALOG>
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
<CD>
<TITLE>Hide your heart</TITLE>
<ARTIST>Bonnie Tyler</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>CBS Records</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1988</YEAR>
</CD>
現在,當我改變自己的源代碼,這樣的輸出,而不是作爲一個表,僅僅是從xmlhttp對象接收到的responseText就有一個奇怪的現象。每個CD元素都缺少所有TITLE元素 - 所有其他元素都會出現。但是,在調用responseXML時,您可以訪問TITLE元素。
我改變了自己的源代碼,這一點:
<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc(url) {
var xmlhttp;
var txt, x, xx, 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) {
document.getElementById('txtCDInfo').innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
</script>
</head>
<body>
<div id="txtCDInfo">
<button onclick="loadXMLDoc('cd_catalog.xml')">
Get CD info</button>
</div>
</body>
</html>
而且我得到的輸出(對空間的緣故,我只包含對應於XML片段輸出包括以上):
Bob Dylan USA Columbia 10.90 1985 Bonnie Tyler UK CBS Records 9.90 1988
可以看出,每張CD的TITLE都沒有了!
如果我沒有清楚地解釋自己,那麼如果你去教程鏈接並將上面的代碼複製到他們的編輯器中,然後單擊「提交代碼」,然後單擊「獲取CD信息」按鈕,您可以更清楚地看到輸出。
是什麼導致了這個問題?我的大腦疲憊不堪。
在此先感謝您的幫助!
感謝您的回答,菲爾。你絕對正確,並挽救我的頭更加震撼!我從來沒有意識到responseText正在返回標籤,我認爲它只是返回標籤內的數據!我沒有理由在頁面上打印responseText,我只是試驗了不同的情況,試圖讓DOM樹順利導航 - 我注意到,當我在responseText上打印時,發生了這種奇怪的事件,我無法弄清楚- 所以謝謝!! – monster
沒問題,很高興幫助。幫助您調試文檔問題的有用工具是包含在大多數主流瀏覽器(例如IE,Firefox,Chrome)中的DOM瀏覽器。你可以右擊頁面的任何部分並說「檢查元素」 - 這將打開一個窗口,顯示DOM的當前內容,這對調試非常有幫助。 – Phil