當前ajax技術作為web2.0的技術主體,已經是非常流行了。現在的很多網站都已做ajax為時尚,因為它的頁面響應速度快,用戶體驗高啊,每次轉換頁面幾乎就是不刷新。那麼是什麼東西使這ajax的響應這麼快呢?是XMLHTTPRequest對象。XMLHTTPRequest對象是ajax技術的核心,沒有XMLHTTPRequest對象就相當於沒有ajax,它是最重要的一個對象。下面我們來介紹一下這個東西。
XMLHTTPRequest是XMLHTTP組件的對象,通過XMLHTTPRequest可以像桌面應用程序一樣只同服務器進行數據層面的信息交換,而不用刷新頁面,也不用將數據處理的一大堆事情交給服務器去做,客戶端或是浏覽器能做的就幫服務器分擔一點,這樣多好啊。用戶體驗高了,服務器負擔還減輕了不少。
XMLHTTPRequest的應用:
var xmlhttp = new XMLHTTPRequest(); 用new關鍵字創建XMLHTTPRequest的對象
在微軟的IE浏覽器裡XMLHTTP組件有區別
var xmlhttp = new ActiveXObject(Microsoft.XMLHTTP);
var xmlhttp = new ActiveXObject(Msxml2.XMLHTTP);
微軟用Active X來支持XMLHttp組件
列舉一個跨浏覽器的例子:
<script language=”javascript”>
var XHR;
//創建XMLHTTPRequest對象
function creatXMLHTTPRequest() {
if (window. XMLHTTPRequest) { //firefox浏覽器
XHR = new XMLHTTPRequest();
}
ese if (window.ActiveObject) { //IE浏覽器
try {
XHR = new ActiveXObject(“Msxml2.XMLHTTP”);
} catch (e){
try {
XHR = new ActiveXObject(“Microsoft.XMLHTTP”);
} catch (e) {}
}}}
</script>
XMLHTTPRequest 是個對象,學過一些面向對象編程的同學能知道,每個對象裡有屬性和方法。Javascript也是面向對象的語言,這裡面的對象同樣有著它的屬性和方法。
我們先來看看它的屬性
再來看看XMLHTTPRequest對象的方法
方法 作用abort()
用它來停止當前請求
open(“方法名”,”URL”)
方法名是指,請求的方法get或者是post
這個方法可以理解為准備一個請求。
send(content)
僅當readyState值為1時,你才可以調用send()方法;否則的話,XMLHttpRequest對象將引發一個異常。
setRequestHeader()
該setRequestHeader(DOMString header,DOMString value)方法用來設置請求的頭部信息。當readyState值為1時,你可以在調用open()方法後調用這個方法;否則,你將得到一個異常。
getResponseHeader()
getResponseHeader(DOMString header,value)方法用於檢索響應的頭部值。
getAllResponseHeaders()
把HTTP請求的所有響應首部作為鍵/值對
再來看看XMLHTTPRequest對象的方法
方法 作用
abort()
用它來停止當前請求
open(“方法名”,”URL”)
方法名是指,請求的方法get或者是post
這個方法可以理解為准備一個請求。
send(content)
僅當readyState值為1時,你才可以調用send()方法;否則的話,XMLHttpRequest對象將引發一個異常。
setRequestHeader()
該setRequestHeader(DOMString header,DOMString value)方法用來設置請求的頭部信息。當readyState值為1時,你可以在調用open()方法後調用這個方法;否則,你將得到一個異常。
getResponseHeader()
getResponseHeader(DOMString header,value)方法用於檢索響應的頭部值。
getAllResponseHeaders()
把HTTP請求的所有響應首部作為鍵/值對
不過現在很多框架像是dwr。都已經盡力的簡化XMLHTTPRequest對象的操作,也就是說現在開發ajax時候,大部分已經不需要自己寫XMLHTTPRequest,而是一些框架幫著你做了。不過要想學好一門技術從基礎學起也是很必要的。