XMl
是現代電腦中無所不在的資料格式,Ajax應用所處的Web瀏覽器環境,特別是XMLHttpRequest對象,對於處理XML提供了很好的本地支援,如果XZmlHttpRequest接收到了一個XML內容類型,例如application/xml或test/xml,它將會響應表現為一個DOM!
下面看段指令碼:
<script>
var offset=8;
function showPopup(name,description)
{
var win=new DataPopup(name,description,offset,offset,320,320);
offset+=32;
}
function DataPopup(name,description,x,y,w,h)
{
var bod=document.createElement("div");
document.body.appendChild(bod);
this.contentDiv=document.createElement("div");
this.contentDiv.className="windContents";
this.contentDiv.innerHTML=description;
bod.appendChild(this.contentDiv);
this.win=new windows.Window(bod,name,x,y,w,h);
}
function showInfo(event)
{
var planet=this.id;
var scriptUrl=planet+".xml";
new net.ContentLoader(scriptUrl,parseXML);
}
function parseXML()
{
var name="";
var descrip="";
var xmlDoc=this.req.responseXML;
var elDocRoot=xmlDoc.getElementsByTagName("planet")[0];
if(elDocRoot)
{
attrs=elDocRoot.attributes;
name=attrs.getNamedItem("name").value;
var ptype=attrs.getNamedItem("type").value;
if(ptype)
{
descrip+="<h2>"+ptype+"</h2>";
}
descrip+="<ul>";
for(var i=0;i<elDocRoot.childNodes.length;i++)
{
elChild=elDocRoot.childNodes[i];
if(elChild.nodeName=="info")
{
descrip+="<li>"+elChild.firstChild.data+"</li>\n";
}
}
descrip+="</ul>";
}
else{
alert("no document");
}
top.showPopup(name,descrip);
}
</script>
showInfo函數簡單地開啟一個封裝在ContentLoader對象中的 XMLHttpRequest對象,提供parseXML()方法作為回調。這個回呼函數比evalScript()方法稍微麻煩一些,因為我們需要在響應的DOM中導航,從中抽取出資料,然後再手工調用showPopup()方法,!以xml資料為中心的應用中可以使用這些資料!
xml的一個很大優點是有助於對資訊進行結構話!這個指令碼中用parseXMl()將函數中將他們轉換成一段HTML的無語立標!