进入本人ajax学习第三课,使用ajax获取XML文档中信息。效果图
以下是HTML部分的代码:
<html>
<head>
<title>ajax 3</title>
<script type="text/javascript">
var xmlHttp;
var requestType="";
function createXMLHttpRequest(){
if(window.ActiveXObject){
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}
}
function startRequest(requestedList){
requestType = requestedList;
createXMLHttpRequest();
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.open("GET","paresXML.xml",true);
xmlHttp.send(null);
}
function handleStateChange(){
if(xmlHttp.readyState == 4){
if(xmlHttp.status == 200){
if(requestType == "north"){
listNorthStates();
}else if(requestType == "all"
listAllStates();
}
}
}
}
function listNorthStates(){
var xmlDoc = xmlHttp.responseXML;
var northNode = xmlDoc.getElementsByTagName("north")[0];
var out = "Northern States";
var northStates = northNode.getElementsByTagName("state");
outputList("Northern States",northStates);
}
function listAllStates(){
var xmlDoc = xmlHttp.responseXML;
var allStates = xmlDoc.getElementsByTagName("state");
outputList("All States in Document",allStates)
}
function outputList(title,states){
var out = title;
var currentState = null;
for(var i = 0 ; i < states.length; i++){
currentState = states[i];
out = out+"\n"+currentState.childNodes[0
].nodeValue;
alert(out);
}
}
</script>
</head>
<body>
<input type="button" value="查看所有" onclick="startRequest('all')" /><br />
<input type="button" value="查看north" onclick="startRequest('north')" />
</body>
</html>
以下是XML文件代码:
<?xml version="1.0" encoding="UTF-8"?>
<states>
<north>
<state>Minnesota</state>
<state>Iowa</state>
<stae>North Dakota</stae>
</north>
<south>
<state>Texas</state>
<state>Oklahoma</state>
<state>Louisiana</state>
</south>
<east>
<state>New York</state>
<state>North Carolina</state>
<state>Massachusetts</state>
</east>
<west>
<state>California</state>
<state>Oregon</state>
<state>Nevad</state>
</west>
</states>
首先listAllStates函数创建了一个局部变量xmlDoc,并将这个变量初始化设置为服务器返回的XML文档,这个XML文档是使用XMLHttpRequest对象的responseXML属性得到的。利用XML文档的getElementsByTagName方法可以获取文档中所有标记名为state的元素。getElementsByTagName方法返回了包含所有state元素的数组,这个数组将付给名为allStates得局部变量。从XML文档获取了所有state元素之后,listAllStates函数调用outputList函数并在警告框中显示这些state元素。listAllStates方法将迭代处理state元素的数组,将各各元素的响应州名逐个追加到一个串中,这个串最后将显示在警告框中。 outputList函数迭代处理数组中的所有元素,将当前元素赋给currentState变量。因为表示州名的文本元素总是state元素的第一个子元素,所以可以使用chinldNodes属性来得到文本元素。 listNorthStates函数与listAllStates函数是类似的,唯一不同的是它使用了getElementsByTagName方法获得north标记,从而获得XML文档中的north元素。因为文档只包含一个north元素,而且getElementsByTagName方法总是返回一个数组,所以用[0]下标来抽取north元素。注:此ajax学习资料来自 方正apabi联盟制作的《ajax基础教程》译自:《Founations of Ajax》