2007年7月5日 星期四

使用php與ajax製作xml回傳至客戶端

var xmlhttp =createxmlhttprequestobject();
function createxmlhttprequestobject()
{
var xmlhttp;
try
{
xmlhttp = new xmlhttprequest();
}
catch(e)
{
var xmlhttpversions = new array ("MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP");
for (var i=0;i {
try
{
xmlhttp= new activexobject(xmlhttpversions[i]);
}
catch(e){}
}
}
if (!xmlhttp)
alert("error creating the xmlhttprequest object.")
else
return xmlhttp;
}
function process()
{
if (xmlhttp)
{
try
{
xmlhttp.open("GET","phptest.php",true);
xmlhttp.onreadystatechange = handlerequeststatechange;
xmlhttp.send(null);
}
catch(e)
{
alert("can't connect to server: \n" + e.tostring());
}
}
}

function handlerequeststatechange()
{
if(xmlhttp.readystate == 4)
{
try
{
handleserverresponse();
}
catch(e)
{
alert("error reading the response: " + e.tostring());
}
}
else
{
alert("there was a problem retrieving the data:\n" +xmlhttp.statustext);
}
}
function handleserverresponse()
{
var xmlresponse = xmlhttp.responsexml;
if(!xmlresponse || !xmlresponse.documentelement)
throw("invalid xml structre:\n" + xmlhttp.responsetext);
var rootnodename = xmlresponse.documentelement.nodename;
if (rootnodename == "parsererror") throw("invalid xml structure");
xmlroot = xmlresponse.documentelement;
titlearray = xmlroot.getelementsbytagname("title");
isbnarray = xmlroot.getelementsbytagname("isbn");
var html = "";
for (var i=0;i html += titlearray.item(i).firstchild.data + ", " + isbnarray.item(i).firstchild.data + "
";
mydiv=document.getelementbyid("mydivelement");
mydiv.innerhtml = html;
}