# XMLHttpRequest 對象
通過 XMLHttpRequest 對象,您可以在不重新加載整個頁面的情況下更新網頁中的某個部分。
## 嘗試一下 - 實例
[一個簡單的 XMLHttpRequest 實例](/try/try.php?filename=try_dom_xmlhttprequest_first)
創建一個簡單的 XMLHttpRequest,從 TXT 文件中檢索數據。
```
<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc()
{
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("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","xmlhttp_info.txt",true);
xmlhttp.send();
}
</script>
</head>
<body>
<h2>Using the XMLHttpRequest object</h2>
<div id="myDiv"></div>
<button type="button" onclick="loadXMLDoc()">Change Content</button>
</body>
</html>
```
[通過 getAllResponseHeaders() 檢索頭信息](/try/try.php?filename=try_dom_xmlhttprequest_header)
檢索資源(文件)的頭信息。
```
<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc(url)
{
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('p1').innerHTML=xmlhttp.getAllResponseHeaders();
}
}
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
</script>
</head>
<body>
<p id="p1">The getAllResponseHeaders() function returns the header information of a resource, like length, server-type, content-type, last-modified, etc.</p>
<button onclick="loadXMLDoc('xmlhttp_info.txt')">Get header information</button>
</body>
</html>
```
[通過 getResponseHeader() 檢索指定頭信息](/try/try.php?filename=try_dom_xmlhttprequest_lastmodified)
檢索資源(文件)的指定頭信息。
```
<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc(url)
{
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('p1').innerHTML="Last modified: " + xmlhttp.getResponseHeader('Last-Modified');
}
}
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
</script>
</head>
<body>
<p id="p1">The getResponseHeader() function is used to return specific header information from a resource, like length, server-type, content-type, last-modified, etc.</p>
<button onclick="loadXMLDoc('xmlhttp_info.txt')">Get "Last-Modified" information</button>
</body>
</html>
```
[檢索 ASP 文件的內容](/try/try.php?filename=try_dom_xmlhttprequest_suggest)
當用戶在輸入字段鍵入字符時,網頁如何與 Web 服務器進行通信。
```
<!DOCTYPE html>
<html>
<head>
<script>
function showHint(str)
{
if (str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
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("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","gethint.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<h3>Start typing a name in the input field below:</h3>
<form action="">
First name: <input type="text" id="txt1" onkeyup="showHint(this.value)" />
</form>
<p>Suggestions: <span id="txtHint"></span></p>
</body>
</html>
```
[從數據庫中檢索內容](/try/try.php?filename=try_dom_xmlhttprequest_database)
網頁如何通過 XMLHttpRequest 對象從數據庫中提取信息。
```
<!DOCTYPE html>
<html>
<head>
<script>
function showCustomer(str)
{
if (str=="")
{
document.getElementById("txtHint").innerHTML="";
return;
}
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("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getcustomer.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<form action="">
<select name="customers" onchange="showCustomer(this.value)">
<option value="">Select a customer:</option>
<option value="ALFKI">Alfreds Futterkiste</option>
<option value="NORTS ">North/South</option>
<option value="WOLZA">Wolski Zajazd</option>
</select>
</form>
<br>
<div id="txtHint">Customer info will be listed here...</div>
</body>
</html>
```
[檢索 XML 文件的內容](/try/try.php?filename=try_dom_xmlhttprequest_xml)
創建一個 XMLHttpRequest 從 XML 文件中檢索數據并把數據顯示在一個 HTML 表格中。
```
<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc(url)
{
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();
}
</script>
</head>
<body>
<div id="txtCDInfo">
<button onclick="loadXMLDoc('cd_catalog.xml')">Get CD info</button>
</div>
</body>
</html>
```
## XMLHttpRequest 對象
XMLHttpRequest 對象是用于幕后與服務器交換數據。
XMLHttpRequest 對象是**開發者的夢想**,因為您可以:
* 在不重新加載頁面的情況下更新網頁
* 在頁面已加載后從服務器請求數據
* 在頁面已加載后從服務器接收數據
* 在后臺向服務器發送數據
## XMLHttpRequest 對象方法
| 方法 | 描述 |
| --- | --- |
| abort() | 取消當前的請求。 |
| getAllResponseHeaders() | 返回頭信息。 |
| getResponseHeader() | 返回指定的頭信息。 |
| open(method,url,async,uname,pswd) | 規定請求的類型,URL,請求是否應該進行異步處理,以及請求的其他可選屬性。
method:請求的類型:GET 或 POST
url:文件在服務器上的位置
async:true(異步)或 false(同步) |
| send(string) | 發送請求到服務器。
string:僅用于 POST 請求 |
| setRequestHeader() | 把標簽/值對添加到要發送的頭文件。 |
## XMLHttpRequest 對象屬性
| 屬性 | 描述 |
| --- | --- |
| onreadystatechange | 存儲函數(或函數的名稱)在每次 readyState 屬性變化時被自動調用。 |
| readyState | 存放了 XMLHttpRequest 的狀態。從 0 到 4 變化:
0:請求未初始化
1:服務器建立連接
2:收到的請求
3:處理請求
4:請求完成和響應準備就緒 |
| responseText | 返回作為一個字符串的響應數據。 |
| responseXML | 返回作為 XML 數據響應數據。 |
| status | 返回狀態數(例如 "404" 為 "Not Found" 或 "200" 為 "OK")。 |
| statusText | 返回狀態文本(如 "Not Found" 或 "OK")。 |
- XML 基礎
- XML 簡介
- XML 用途
- XML 樹結構
- XML 語法規則
- XML 元素
- XML 屬性
- XML 驗證
- 查看 XML 文件
- 使用 CSS 顯示 XML
- 使用 XSLT 顯示 XML
- XML Javascript
- XMLHttpRequest 對象
- XML Parser
- XML DOM
- XML to HTML
- XML 應用程序
- XML 進階
- XML 命名空間
- XML CDATA
- XML 編碼
- 服務器上的 XML
- XML DOM 高級
- XML 注意事項
- XML 相關技術
- 現實生活中的 XML
- XML 編輯器
- XML - E4X
- DTD 教程
- DTD 簡介
- DTD - XML 構建模塊
- DTD - 元素
- DTD - 屬性
- XML 元素 vs. 屬性
- DTD - 實體
- DTD 驗證
- DTD - 來自網絡的實例
- XML DOM
- XML DOM 簡介
- XML DOM 節點
- XML DOM 節點樹
- XML DOM 解析器
- XML DOM 加載函數
- XML DOM - 屬性和方法
- XML DOM - 訪問節點
- XML DOM 節點信息
- XML DOM 節點列表
- XML DOM 遍歷節點樹
- XML DOM 瀏覽器差異
- XML DOM - 導航節點
- XML DOM 獲取節點值
- XML DOM 改變節點值
- XML DOM 刪除節點
- XML DOM 替換節點
- XML DOM 創建節點
- XML DOM 添加節點
- XML DOM 克隆節點
- The XMLHttpRequest 對象
- XML DOM 節點類型
- XML DOM - Node 對象
- XML DOM - NodeList 對象
- XML DOM - NamedNodeMap 對象
- XML DOM - Document 對象
- XML DOM - DocumentImplementation 對象
- XML DOM - DocumentType 對象
- XML DOM - ProcessingInstruction 對象
- XML DOM - Element 對象
- XML DOM - Attr 對象
- XML DOM - Text 對象
- XML DOM - CDATASection 對象
- XML DOM - Comment 對象
- XMLHttpRequest 對象
- XML DOM Parse Error 對象
- XML DOM 解析器錯誤
- XSLT 教程
- XSL 語言
- XSLT 簡介
- XSLT 瀏覽器
- XSLT - 轉換
- XSLT <xsl:template> 元素
- XSLT <xsl:value-of> 元素
- XSLT <xsl:for-each> 元素
- XSLT <xsl:sort> 元素
- XSLT <xsl:if> 元素
- XSLT <xsl:choose> 元素
- XSLT <xsl:apply-templates> 元素
- XSLT - 在客戶端
- XSLT - 在服務器端
- XSLT - 編輯 XML
- XML 編輯器
- XSLT 元素參考手冊
- XSLT 函數
- XPath 教程
- XPath 簡介
- XPath 節點
- XPath 語法
- XPath 軸(Axes)
- XPath 運算符
- XPath Examples
- XPath、XQuery 以及 XSLT 函數函數參考手冊
- 函數參考手冊
- XQuery 教程
- XQuery 簡介
- XQuery 實例
- XQuery FLWOR 表達式
- XQuery FLWOR + HTML
- XQuery 術語
- XQuery 語法
- XQuery 添加元素 和屬性
- XQuery 選擇 和 過濾
- XQuery 函數
- XQuery 參考手冊
- XLink 和 XPointer 教程
- XLink 和 XPointer 簡介
- XLink 和 XPointer 語法
- XLink 實例
- XPointer 實例
- XLink 參考手冊
- XML Schema 教程
- XML Schema 簡介
- 為什么使用 XML Schemas?
- XSD 如何使用?
- XSD - <schema> 元素
- XSD 簡易元素
- XSD 屬性
- XSD 限定 / Facets
- XSD 復合元素
- XSD 空元素
- XSD 僅含元素
- XSD 僅含文本
- XSD 混合內容
- XSD 指示器
- XSD <any> 元素
- XSD <anyAttribute> 元素
- XSD 元素替換(Element Substitution)
- XSD 實例
- XSD 字符串 數據類型
- XSD 日期和時間數據類型
- XSD 數值數據類型
- XSD 雜項 數據類型
- XML 編輯器
- XML Schema 參考手冊
- XSD 元素
- XSD 限定/Facets
- SOAP 教程
- SOAP 簡介
- SOAP 語法
- SOAP Envelope 元素
- SOAP Header 元素
- SOAP Body 元素
- SOAP Fault 元素
- SOAP HTTP 協議
- SOAP 實例
- WSDL 教程
- WSDL 簡介
- WSDL 文檔
- WSDL 端口
- WSDL 綁定
- WSDL UDDI
- RSS 教程
- RSS 簡介
- RSS 歷史
- RSS 語法
- RSS <channel> 元素
- RSS <item> 元素
- RSS 發布您的 Feed
- RSS 閱讀器
- RSS 參考手冊
- RDF 教程
- RDF 簡介
- RDF 規則
- RDF 實例
- RDF 主要 元素
- RDF 容器 Elements
- RDF 集合
- RDF Schema (RDFS)
- RDF 都柏林核心元數據倡議
- OWL 簡介
- RDF 參考手冊
- XSL-FO 教程
- XSL-FO 簡介
- XSL-FO 文檔
- XSL-FO 區域
- XSL-FO 輸出
- XSL-FO 流
- XSL-FO 頁面
- XSL-FO 塊
- XSL-FO 列表
- XSL-FO 表格
- XSL-FO 與 XSLT
- XSL-FO 軟件
- XSL-FO 參考手冊
- SVG 教程
- SVG 簡介
- SVG 實例
- SVG 在 HTML 頁面
- SVG <rect>
- SVG <circle>
- SVG <ellipse>
- SVG <line>
- SVG <polygon>
- SVG <polyline>
- SVG <path>
- SVG <text>
- SVG Stroke 屬性
- SVG 濾鏡
- SVG 模糊效果
- SVG 陰影
- SVG 漸變 - 線性
- SVG 漸變- 放射性
- SVG 參考手冊
- 免責聲明