Ajax
可能您是在剛認識了Ajax的核心對象XMLHttpRequest時才認為Ajax中的XML是怎麼回事,或許你肯定它就是Ajax中的x ,但是實際上它和XML沒有什麼直接的關係.這都與它的名字有很大的關係,XMLHttpRequest,而且是出現在Ajax裡面那肯定就是和XML有關了.其實在大多數Ajax應用中XML用的並不是特別多,主要還都是用名/值對進行傳值,下面來介紹下如何使用XML格式在Ajax中進行傳遞資料.
首先,從用戶端把資料傳遞到伺服器,Ajax應用中基本上都是用文本的方式來直接傳遞請求參數,如:
清單 1. 使用普通文本發送名/值對function sendMessage() {
var firstName = document.getElementById("firstName").value;
var lastName = document.getElementById("lastName").value;
var street = document.getElementById("street").value;
var city = document.getElementById("city").value;
var state = document.getElementById("state").value;
var zipCode = document.getElementById("zipCode").value;
var url = "/scripts/saveAddress.php?firstName=" + escape(firstName) +
"&lastName=" + escape(lastName) + "&street=" + escape(street) +
"&city=" + escape(city) + "&state=" + escape(state) +
"&zipCode=" + escape(zipCode);
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = confirmUpdate;
xmlHttp.send(null);
}
上面的例子就是直接把參數添加在url後用 ?paramName1=value2¶mName2=value2的形式來傳遞資料,
這樣做的好處是瀏覽器和伺服器只需要把參數當作普通文本進行處理,速度會比較快,不需要進行格式轉換.
下面來看在Ajax應用如何用XML格式來傳遞參數到伺服器,看看下面的例子;
清單 2. 用 XML 發送名/值對
function sendMessage() {
var firstName = document.getElementById("firstName").value;
var lastName = document.getElementById("lastName").value;
var street = document.getElementById("street").value;
var city = document.getElementById("city").value;
var state = document.getElementById("state").value;
var zipCode = document.getElementById("zipCode").value;
var xmlString = "<profile>" +
" <firstName>" + escape(firstName) + "</firstName>" +
" <lastName>" + escape(lastName) + "</lastName>" +
" <street>" + escape(street) + "</street>" +
" <city>" + escape(city) + "</city>" +
" <state>" + escape(state) + "</state>" +
" <zip-code>" + escape(zipCode) + "</zip-code>" +
"</profile>";
var url = "/scripts/saveAddress.php";
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader("Content-Type", "text/xml");
xmlHttp.onreadystatechange = confirmUpdate;
xmlHttp.send(xmlString);
}
現在您應該知道是怎麼回事了,其實在Ajax傳遞XML真的顯得很笨拙,它需要固定的XML格式,以及多餘的字元,還要把請求格式給設定成(text/xml),而且在傳遞的時候並不是象在傳遞普通文本一樣放在URL後面傳遞,而是由send方法親自傳遞到伺服器,伺服器還要把它們以XML格式進行分析處理,然後做出響應! !真是廢時又廢力,所以說不推薦使用XML傳遞資料到伺服器,除非 伺服器它只接受XML類型!
下次我們看看另一種情況,從伺服器發出XML響應資訊!