1:在講ajax的原理之前我們先簡單的瞭解一下ajax的背景 可否認,ajax技術的流行得益於google的大力推廣,正是由於google、gmail等對ajax技術的廣泛應用,才催生了ajax的流行。而這也讓微軟感到無比的尷尬,因為早在97年,微軟便已經發明瞭ajax中的關鍵技術,並且在99年IE ...
1:在講ajax的原理之前我們先簡單的瞭解一下ajax的背景
可否認,ajax技術的流行得益於google的大力推廣,正是由於google、gmail等對ajax技術的廣泛應用,才催生了ajax的流行。而這也讓微軟感到無比的尷尬,因為早在97年,微軟便已經發明瞭ajax中的關鍵技術,並且在99年IE5推出之時,它便開始支持XmlHttpRequest對象,並且微軟之前已經開始在它的一些產品中應用ajax,遺憾的是,不知道出於什麼想法,當時微軟發明瞭ajax的核心技術之後,並沒有看到它的潛力而加以發展和推廣,而是將它擱置起來。正是這一次的失誤,成就了它現在的競爭對手google在ajax方面的領先地位,而事實上google目前在ajax技術方面的領先是微軟所無法達到的,現在微軟也意識到了這個問題,因此它也開始在ajax領域奮起直追,比如說推出它自己的ajax框架atlas,並且在.NET2.0也提供了一個用來實現非同步回調的介面,即ICallBack介面。
2:關於AJAX的名字
ajax的全稱是Asynchronous JavaScript and XML 其中Asynchronus是非同步的意思,他有別於傳統web開發中採取的同步方式。同步在這裡就不做詳細的介紹了,有興趣的朋友可以自己查一下文檔。
3:AJAX所包含的技術
大家都知道ajax並不是一種新的技術,而是幾種原有技術的結合體。它是由下列技術的結合而成。
1:使用CSS和XMTML來展示
2:使用DOM模型來交換和動態的效果顯示
3:使用XMLHttpRequest和伺服器進行非同步通信
4:使用JavaScript來進行綁定和調用
在上面的幾種技術中,除了XMLHttpRequest對象以外,其它所有的技術都是基於web標準並且已經得到了廣泛的應用,XMLHttpRequest對象雖然目前還沒有被W3C所採納,但是它已經是一個事實的標準,因為目前幾乎所有的主流瀏覽器都支持它。
4:AJXA原理和XMLHttpRequest對象
ajax的原理簡單來說就是通過XMLHttpRequest對象來向伺服器發送非同步請求,從伺服器獲取數據,然後用javascript來操作dom元素進行跟新頁面,這個過程中最關鍵的一步就是從伺服器獲取請求數據,要清楚這個過程和原理,我們必須對XMLHttpRequest對象有所瞭解。
XMLHttpRequest是ajax的核心機制,它是在IE5中首先引入的,是一種支持非同步請求數據的技術,簡單的說,也就是javascript可以及時向伺服器提出請求和處理響應,而不阻塞用戶。達到頁面無刷新的效果。
所有我們先從XMLHttpRequest這個對象說起,看看它是怎麼工作的
XMLHttpRequest對象的屬性有:
onreadystatechange 每次狀態改變所觸發的事件的事件處理程式
responseText 從伺服器進程返回數據的數據形式
responseXML 從伺服器進程返回的DOM相容的文檔數據對象
status 從伺服器返回的數字代碼,比如常見的404未找到和200以就緒
status Text 狀態碼的字元串信息
readyState 對象的狀態值
0(未初始化) 對象已經建立,但是尚未初始化沒有調用open方法
1(對象初始化) 對象已經建立,尚未調用send方法
2(發送數據) send方法已經調用,但是當前的狀態及http頭未知
3(數據傳送中) 客服端已經接受一些數據,因為響應頭http不全,這時通過responseBody和responseTest獲取數據可能部分數據會出現錯誤
4(結束數據完成)數據接收完畢,此時可以通過responseXml和responseText獲取伺服器返回的完整數據了
但是,由於各瀏覽器之間存在差異,所以創建一個XMLHttpRequest對象可能需要不同的方法。這個差異主要體現在IE和其它瀏覽器之間。下麵是一個比較標準的創建XMLHttpRequest對象的方法。