XMLHttpRequest 对象用于在后台与服务器交换数据。
什么是 XMLHttpRequest 对象?@H_301_5@
XMLHttpRequest 对象用于在后台与服务器交换数据。
XMLHttpRequest 对象是开发者的梦想,因为您能够:
所有现代的浏览器都支持 XMLHttpRequest 对象。
通过一行简单的 JavaScript 代码,我们就可以创建 XMLHttpRequest 对象。
创建 XMLHttpRequest 对象的语法:
xmlhttp=new XMLHttpRequest();
老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
实例 1@H_301_5@
<script type="text/javascript">
var xmlhttp;
function loadXMLDoc(url)
{
xmlhttp=null;
if (window.XMLHttpRequest)
{// code for all new browsers
xmlhttp=;
}
else if (window.ActiveXObject)
{// code for IE5 and IE6
xmlhttp=;
}
if (xmlhttp!=null)
{
xmlhttp.onreadystatechange=state_Change;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}
else
{
alert("Your browser does not support XMLHTTP.");
}
}
function state_Change()
{
if (xmlhttp.readyState==4)
{// 4 = "loaded"
if (xmlhttp.status==200)
{// 200 = OK
// ...our code here...
}
else
{
alert("Problem retrieving XML data");
}
}
}
</script>new XMLHttpRequest()new ActiveXObject("Microsoft.XMLHTTP")
xmlhttp:open
open
创建一个新的http请求,并指定此请求的方法、URL以及验证信息
语法
oXMLHttpRequest.open(bstrMethod,bstrUrl,varAsync,bstrUser,bstrPassword);
参数
bstrMethod
http方法,例如:POST、GET、PUT及PROPFIND。大小写不敏感。
bstrUrl
请求的URL地址,可以为绝对地址也可以为相对地址。
varAsync[可选]
布尔型,指定此请求是否为异步方式,默认为true。如果为真,当状态改变时会调用onreadystatechange属性指定的回调函数。
bstrUser[可选]
如果服务器需要验证,此处指定用户名,如果未指定,当服务器需要验证时,会弹出验证窗口。
bstrPassword[可选]
验证信息中的密码部分,如果用户名为空,则此值将被忽略。
Example
下面的例子演示从服务器请求book.xml,并显示其中的book字段。
var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
xmlhttp.open("GET","http://localhost/books.xml",false);
xmlhttp.send();
var book = xmlhttp.responseXML.selectSingleNode("//book[@id=''bk101'']");
alert(book.xml);
备注
调用此方法后,可以调用send方法向服务器发送数据。
XMLHttpRequest 对象是 W3C 的标准吗?@H_301_5@
任何 W3C 推荐标准均未规定 XMLHttpRequest 对象。
不过,W3C DOM Level 3 的 "Load and Save" 规范包含了一些相似的功能性,但是还没有任何浏览器实现它们。
所有现代浏览器都内建了供读取和操作 XML 的 XML 解析器。
解析器把 XML 转换为 XML DOM 对象 - 可通过 JavaScript 操作的对象。
解析 XML 文档@H_301_5@
下面的代码片段把 XML 文档解析到 XML DOM 对象中:
if (window.XMLHttpRequest) {// code for IE7+,Firefox,Chrome,Opera,Safari xmlhttp=; } else {// code for IE6,IE5 xmlhttp=; } xmlhttp.open("GET","books.xml",false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; new XMLHttpRequest()new ActiveXObject("Microsoft.XMLHTTP")
其他方法 1:通过微软的 XML 解析器来加载 XML
微软的 XML 解析器内建于 Internet Explorer 5 以及更高的版本中。
下面的 JavaScript 片段把一个 XML 文档载入解析器中:
var xmlDoc=; xmlDoc.async="false"; xmlDoc.load("note.xml");new ActiveXObject("Microsoft.XMLDOM")
其他方法 2:在 Firefox 及其他浏览器中的 XML 解析器
下面的 JavaScript 片段把 XML 文档 ("note.xml") 载入解析器:
var xmlDoc=; xmlDoc.async="false"; xmlDoc.load("note.xml");document.implementation.createDocument("","",null)
解析 XML 字符串@H_301_5@
下面的 JavaScript 代码片段把 XML 字符串解析到 XML DOM 对象中(把字符串 txt 载入解析器):
txt="<bookstore><book>"; txt=txt+"<title>Everyday Italian</title>"; txt=txt+"<author>Giada De Laurentiis</author>"; txt=txt+"<year>2005</year>"; txt=txt+"</book></bookstore>"; if (window.DOMParser) { parser=; xmlDoc=parser.parseFromString(txt,"text/xml"); } else // Internet Explorer { xmlDoc=; xmlDoc.async="false"; xmlDoc.loadXML(txt); } new DOMParser()new ActiveXObject("Microsoft.XMLDOM")