使用AJAX从服务端获取数据的时候,基本原理和从服务端获取其他类型的数据是一样的,有一点不同的是,如果从服务端获取的数据是简单文本格式的话,
要用到XMLHttpRequest的responseText属性,如果获取的数据是XML的话,要用到XMLHttpRequest的responseXML属性
另外在创建XMLHttpRequest对象的时候也和之前在获取简单文本格式的数据的时候有一点点的不同
var XMLHttpRequestObject=false;
if (window.XMLHttpRequest) {
XMLHttpRequestObject=new XMLHttpRequest();
XMLHttpRequestObject.overrideMimeType("text/xml");
} else if (window.ActiveXObject) {
XMLHttpRequestObject=new ActiveXObject("Microsoft.XMLHTTP");
}
为什么要加上那行黑色加粗的代码,是因为在有些情况下,Mozilla、Firefox和Netscape可将XMLHttpRequest对象所需的数据类型设置为非XML值,因此,下载XML
时,要加上这行代码将所需数据类型设置为XML
function getmenu1(){
if (XMLHttpRequestObject) {
XMLHttpRequestObject.open("GET","menu1.xml");
XMLHttpRequestObject.onreadystatechange=function(){
if (XMLHttpRequestObject.readyState==4&&XMLHttpRequestObject.status==200) {
var xmlDocument=XMLHttpRequestObject.responseXML;
var menu=xmlDocument.getElementsByTagName("menuitem");
listmenu(menu);
}
}
XMLHttpRequestObject.send(null);
}
}
function listmenu(menu){
var loopIndex;
var seelctControl=document.getElementById('menuList')
for (loopIndex=0;loopIndex<menu.length;loopIndex++) {
seelctControl.options[loopIndex]=new Option(menu[loopIndex].firstChild.nodeValue);
}
}
这个是我根据书上的代码写的,获取某一个xml文件中的数据。