<script type="text/javascript">
window.onload = function() {
var aNodes = document.getElementsByTagName("a");
for(var i = 0; i < aNodes.length; i++) {
aNodes[i].onclick = function() {
var request = new XMLHttpRequest();
var method = "GET";
var url = this.href;
request.open(method, url);
request.send(null);
request.onreadystatechange = function() {
if(request.readyState == 4) {
if(request.status == 200 || request.status == 304) {
//1. 结果为XML格式,所以需要使用responseXML 来获取
var result = request.responseXML;
//2.结果不能直接使用,必须先创建对应的节点,再把节点加入到#details中
//目标格式为:
/*
* <h2><a href="mailto:andy@clearleft.com">Andy Budd</a></h2>
<a href="http://andybudd.com/">http://andybudd.com/</a>
*/
var name = result.getElementsByTagName("name")[0].firstChild.nodeValue;
var website = result.getElementsByTagName("website")[0].firstChild.nodeValue;
var email = result.getElementsByTagName("email")[0].firstChild.nodeValue;
var aNode = document.createElement("a");
aNode.appendChild(document.createTextNode(name));
aNode.href = "mailto:" + email;
var h2Node = document.createElement("h2");
h2Node.appendChild(aNode);
var aNode2 = document.createElement("a");
aNode2.appendChild(document.createTextNode(website));
aNode2.href = "mailto:" + email;
var detailsNode = document.getElementById("details");
detailsNode.innerHTML = "";
detailsNode.appendChild(h2Node);
detailsNode.appendChild(aNode2);
}
}
}
return false;
}
}
}
</script>
Ajax具体用法同Ajax——javascript之html篇
不同点为XML文档的解析方式,需要获取每一个xml中的自定义节点,较为复杂。
XML格式代码如下:
<?xml version="1.0" encoding="utf-8"?>
<details>
<name>Jeremy Keith</name>
<website>http://adactio.com/</website>
<email>mailto:jeremy@clearleft.com</email>
</details>
总结:
优点:
1.XML是一种通用的数据格式
2.不必把数据强加到已定义好的格式中,而是要为数据自定义合适的标记
3.利用DOM可以完全掌控文档
缺点:
1.如果文档来自于服务器,就必须得保证文档含有正确的首部信息。若文档类型不正确,那么responseXML的值将是空的
2.当浏览器接收到长的XML文件后,DOM解析可能会很复杂