Ajax一定要用XML嗎?我覺得不一定用。
不用XML的理由:
1. javascript指令碼解析Xml比較慢;
2. 對於一些簡單資料,用Xml有點大炮轟蚊子的感覺;
3. XmlHttp提供了responseText,就是給了大家不用Xml的方便;
不用Xml用什嗎?
可以採用技術很多,對於簡單資料你可以返回自訂的資料格式,比如,第1位是狀態位,第2位之後是資料。對於複雜資料,你甚至可以直接返回javascript指令碼,然後用eval執行。
在最近寫的一個無重新整理聊天程式中,我就使用了直接返回javascript指令碼的方式,下面是自動擷取訊息的部分代碼。
var xmlhttp=createXH();
function checkMsg(){
xmlhttp.open('Get', 'Message/CheckNew.aspx', true);
xmlhttp.onreadystatechange=continueCheckMsg;
xmlhttp.send('');
}
function continueCheckMsg(){
if(xmlhttp.readyState==4){
var rt=xmlhttp.responseText;
if(rt!=''){
var msgs=eval(rt);
// ... 接下來就是處理訊息分發
}
}
setTimeout('checkMsg()', 10000); // 每隔10秒重新整理一次
}
說明:
1. rt=xmlhttp.responseText返回新訊息的資料,當沒有新訊息時,返回空;當有新訊息時(可以使多條),返回的內容格式如下:
[['發送人1','發送時間1','訊息內容1'], ['發送人2','發送時間2','訊息內容2'], ...]
2. 通過var msgs=eval(rt)後,msgs就是存放了n條訊息的二維數組,然後按二維數組的方式處理就可以了;
最後,收集了一篇比較有用的文章,裡面對使用Xml有詳細介紹:
http://www.dragonson.com/doc/ajax.html