- 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 对象
- DOM - Node 对象
- DOM - NodeList 对象
- DOM - NamedNodeMap 对象
- DOM - DOMImplementation
- DOM - DocumentType 对象
- DOM - ProcessingInstruction
- DOM - Entity 对象
- DOM - EntityReference 对象
- DOM - Notation 对象
- DOM - Element 对象
- DOM - Attribute 对象
- DOM - CDATASection 对象
- DOM - Comment 对象
- DOM - XMLHttpRequest 对象
- DOM - DOMException 对象
- XML DOM 有用资源
- XML DOM - 快速指南
- XML DOM - 有用资源
- XML DOM - 讨论
DOM - XMLHttpRequest 对象
XMLHttpRequest 对象在网页的客户端和服务器端之间建立了一种媒介,许多脚本语言(如 JavaScript、JScript、VBScript 和其他 Web 浏览器)都可以使用它来传输和操作 XML 数据。
使用 XMLHttpRequest 对象,可以更新网页的一部分而无需重新加载整个页面,在页面加载后请求和接收来自服务器的数据,以及向服务器发送数据。
语法
XMLHttpRequest 对象的实例化方法如下:
xmlhttp = new XMLHttpRequest();
为了兼容所有浏览器,包括 IE5 和 IE6,请检查浏览器是否支持 XMLHttpRequest 对象,如下所示:
if(window.XMLHttpRequest) // for Firefox, IE7+, Opera, Safari, ... { xmlHttp = new XMLHttpRequest(); } else if(window.ActiveXObject) // for Internet Explorer 5 or 6 { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }
使用 XMLHttpRequest 对象加载 XML 文件的示例,请参考 此处
方法
下表列出了 XMLHttpRequest 对象的方法:
序号 | 方法及描述 |
---|---|
1 | abort() 终止当前请求。 |
2 | getAllResponseHeaders() 返回所有响应头作为字符串,如果尚未收到响应则返回 null。 |
3 | getResponseHeader() 返回包含指定标题文本的字符串,如果尚未收到响应或响应中不存在该标题,则返回 null。 |
4 | open(method,url,async,uname,pswd) 它与 Send 方法一起使用,将请求发送到服务器。open 方法指定以下参数:
|
5 | send(string) 它用于发送与 Open 方法一起工作的请求。 |
6 | setRequestHeader() Header 包含发送请求的标签/值对。 |
属性
下表列出了 XMLHttpRequest 对象的属性:
序号 | 属性及描述 |
---|---|
1 | onreadystatechange 这是一个基于事件的属性,在每次状态更改时都会设置。 |
2 | readyState 这描述了 XMLHttpRequest 对象的当前状态。readyState 属性有五种可能的状态:
|
3 | responseText 当服务器的响应为文本文件时,使用此属性。 |
4 | responseXML 当服务器的响应为 XML 文件时,使用此属性。 |
5 | status 将 Http 请求对象的狀態作为数字返回。例如,“404”或“200”。 |
6 | statusText 将 Http 请求对象的狀態作为字符串返回。例如,“未找到”或“确定”。 |
示例
node.xml 内容如下:
<?xml version = "1.0"?> <Company> <Employee category = "Technical"> <FirstName>Tanmay</FirstName> <LastName>Patil</LastName> <ContactNo>1234567890</ContactNo> <Email>[email protected]</Email> </Employee> <Employee category = "Non-Technical"> <FirstName>Taniya</FirstName> <LastName>Mishra</LastName> <ContactNo>1234667898</ContactNo> <Email>[email protected]</Email> </Employee> <Employee category = "Management"> <FirstName>Tanisha</FirstName> <LastName>Sharma</LastName> <ContactNo>1234562350</ContactNo> <Email>[email protected]</Email> </Employee> </Company>
检索资源文件的特定信息
以下示例演示如何使用 getResponseHeader() 方法和 readyState 属性检索资源文件的特定信息。
<!DOCTYPE html> <html> <head> <meta http-equiv = "content-type" content = "text/html; charset = iso-8859-2" /> <script> function loadXMLDoc() { var xmlHttp = null; if(window.XMLHttpRequest) // for Firefox, IE7+, Opera, Safari, ... { xmlHttp = new XMLHttpRequest(); } else if(window.ActiveXObject) // for Internet Explorer 5 or 6 { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } return xmlHttp; } function makerequest(serverPage, myDiv) { var request = loadXMLDoc(); request.open("GET", serverPage); request.send(null); request.onreadystatechange = function() { if (request.readyState == 4) { document.getElementById(myDiv).innerHTML = request.getResponseHeader("Content-length"); } } } </script> </head> <body> <button type = "button" onclick="makerequest('/dom/node.xml', 'ID')">Click me to get the specific ResponseHeader</button> <div id = "ID">Specific header information is returned.</div> </body> </html>
执行结果
将此文件保存为服务器路径上的 elementattribute_removeAttributeNS.htm(此文件和 node_ns.xml 应位于服务器上的同一路径)。我们将得到如下所示的输出:
Before removing the attributeNS: en After removing the attributeNS: null
检索资源文件的标头信息
以下示例演示如何使用 getAllResponseHeaders() 方法和 readyState 属性检索资源文件的标头信息。
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" /> <script> function loadXMLDoc() { var xmlHttp = null; if(window.XMLHttpRequest) // for Firefox, IE7+, Opera, Safari, ... { xmlHttp = new XMLHttpRequest(); } else if(window.ActiveXObject) // for Internet Explorer 5 or 6 { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } return xmlHttp; } function makerequest(serverPage, myDiv) { var request = loadXMLDoc(); request.open("GET", serverPage); request.send(null); request.onreadystatechange = function() { if (request.readyState == 4) { document.getElementById(myDiv).innerHTML = request.getAllResponseHeaders(); } } } </script> </head> <body> <button type = "button" onclick = "makerequest('/dom/node.xml', 'ID')"> Click me to load the AllResponseHeaders</button> <div id = "ID"></div> </body> </html>
执行结果
将此文件保存为服务器路径上的 http_allheader.html(此文件和 node.xml 应位于服务器上的同一路径)。我们将得到如下所示的输出(取决于浏览器):
Date: Sat, 27 Sep 2014 07:48:07 GMT Server: Apache Last-Modified: Wed, 03 Sep 2014 06:35:30 GMT Etag: "464bf9-2af-50223713b8a60" Accept-Ranges: bytes Vary: Accept-Encoding,User-Agent Content-Encoding: gzip Content-Length: 256 Content-Type: text/xml