p: AJAX (Asynchronous JavaScript and XML) 是一種用于在網頁上異步請求數據的技術。它可以在網頁加載的同時,向服務器發送異步請求,并且在不刷新整個頁面的情況下,將服務器返回的數據動態地顯示在網頁上。其中,使用 AJAX 獲取 XML 數據是一種常見的應用場景。本文將介紹如何使用 AJAX 的 GET 方法獲取 XML 數據,并給出一些示例來說明。
p: 在使用 AJAX 的 GET 方法獲取 XML 數據之前,我們首先需要了解 XML(eXtensible Markup Language)的基本概念。XML 是一種用于存儲和傳輸數據的標記語言,它由一系列的標簽和數據組成。可以將其類比為 HTML,但是 XML 更加靈活,可以自定義標簽和屬性。下面是一個簡單的 XML 示例:
pre:
```xmlAjax in Action Dave Crane, et al. 2005 ```
p: 假設我們想要通過 AJAX 獲取這個 XML 數據,并將其展示在網頁上。首先,我們需要創建一個 XMLHttpRequest 對象來發送異步請求。然后,我們使用該對象的 open 方法指定請求的地址和方式(這里是 GET 方法)。最后,我們使用該對象的 send 方法發送請求。
pre:
```javascript
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "books.xml", true);
xmlhttp.send();
```
p: 接下來,我們需要通過監聽 XMLHttpRequest 對象的 readyState 和 status 屬性的變化來判斷請求的狀態。當 readyState 的值變為 4 且 status 的值為 200 時,表示請求已成功完成。此時,我們可以通過訪問 XMLHttpRequest 對象的 responseXML 屬性來獲取服務器返回的 XML 數據。
pre:
```javascript
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var xmlDoc = xmlhttp.responseXML;
var title = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
var author = xmlDoc.getElementsByTagName("author")[0].childNodes[0].nodeValue;
var year = xmlDoc.getElementsByTagName("year")[0].childNodes[0].nodeValue;
document.getElementById("bookInfo").innerHTML = "Title: " + title + "
Author: " + author + "
Year: " + year; } }; ``` p: 在上面的代碼中,我們通過使用 getElementsByTagName 方法來獲取特定標簽的元素,然后使用 childNodes[0].nodeValue 來獲取元素的文本內容。接著,我們將獲取到的數據展示在 id 為 bookInfo 的元素上。 p: 值得注意的是,在使用 getElementsByTagName 方法時,要注意 XML 數據的層次結構。比如,在上面的示例中,我們可以通過使用 getElementsByTagName("book") 來獲取整個 book 節點的信息,然后再通過遍歷其子節點來獲取具體的數據。 p: 下面是一個完整的例子,用于展示如何通過 AJAX 獲取 XML 數據并將其顯示在網頁上: pre: ```htmlAJAX Get XML Example
Author: " + author + "
Year: " + year; } }; ``` p: 在上面的代碼中,我們通過使用 getElementsByTagName 方法來獲取特定標簽的元素,然后使用 childNodes[0].nodeValue 來獲取元素的文本內容。接著,我們將獲取到的數據展示在 id 為 bookInfo 的元素上。 p: 值得注意的是,在使用 getElementsByTagName 方法時,要注意 XML 數據的層次結構。比如,在上面的示例中,我們可以通過使用 getElementsByTagName("book") 來獲取整個 book 節點的信息,然后再通過遍歷其子節點來獲取具體的數據。 p: 下面是一個完整的例子,用于展示如何通過 AJAX 獲取 XML 數據并將其顯示在網頁上: pre: ```html