AJAX處理返回的XML字串
當通過AJAX操作的時候,返回的XML如下 :
<?xml version="1.0" encoding="gbk"?>
<root>
<checkresult>
<%=result%>
</checkresult>
<checkresult>
<%=message%>
</checkresult>
</root>
其中返回兩個內容,一個結果數,以及一個針對該結果數的訊息。
AJAX這個就不用去說怎麼樣操作了,下面這個函式只將返回字串組成XML包的形式:
//裝載字串,將字串組成XML的形式返回
function loadXML(xmlString)
...{
var xmldoc;
try ...{
xmldoc = new ActiveXObject("Microsoft.XMLDOM");
if(!xmldoc) xmldoc = new ActiveXObject("MSXML2.DOMDocument.3.0");
} catch(e)...{}
if(!xmldoc) ...{
return null;
} else ...{
xmldoc.async = "false";
xmldoc.loadXML(xmlString);
if(xmldoc.parseError.errorCode == 0 ) ...{
return xmldoc;
} else ...{
return null;
}
}
}
但其中需要注意一點,不能夠直接利用返回得到的位元組流,因為他們不屬於字串,這個時候需要將得到的位元組流轉換為字串,才可以操作成功。我本人就遇到這個問題,直接操作就會出錯,但我把這裡傳入的引數改為對應的XML字串就可以,但我現在還不知道怎麼樣將位元組流轉換為字串,因為總是要內網外網的切換做測試,挺麻煩的。
下面一個方面就是將XML中我們需要的資料,處理陣列,這樣我們就可以在其它的地方使用:
//獲得檢測結果
function getURLResult(URL)
...{
var url = URL;
var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
xmlhttp.open("POST", url, false);
xmlhttp.send();
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");
xmlDoc = loadXML(bytes2BSTR(xmlhttp.responseBody));
var NodeLists = xmlDoc.selectNodes("/root/checkresult");
var result = new Array();
for(var i=0;i<NodeLists.length;i++)...{
result[i] = NodeLists[i].text;
}
return result;
}
在前臺頁面,就可以將需要的結果進行操作了。