Ajax是指一種建立互動式網頁應用的網頁開發技術,其開發與傳統的CS開發有很大的不同,這些不同引入了新的編程問題,最大的問題在於易用性,目前jQuery,Mootools,Dojo以及Ext JS是比較流行的Ajax架構。
然而,伴隨著Ajax應用程式的發展,我們發現了它的一些不足之處,我們發現它的安全性漏洞也在逐漸層大,就像慢慢地把基於Ajax的網站放入了一顆定時炸彈中。
Ajax的好處
在當年“Web應用程式”的美好時代,事情非常簡單。你填寫了一個表單,點擊“提交”按鈕,然後當前螢幕就消失了,等待一小會兒後你就轉入到了下一個頁面。今天的狀況已經不是這樣的了,使用者需要的是一種就像任何傳統型應用程式那樣流暢、快捷和人性化的Web體驗。
Ajax經常是和DHTML(Dynamic HTML)一起協作的,它的順利執行需要允許網頁中的JavaScript代碼和web伺服器在後台無縫通訊。比方說,當你開始在Google Suggest的搜尋方塊中輸入東西時,web頁面就和伺服器在後台開始交換資料,然後會給出一些你可能需要的詞條等。所有的這一切都不需要頁面重新整理或者按下任何按鈕。同樣這也就是像Gmail那樣的應用程式怎麼能對即時拼字檢查做的那麼好的原因。
Ajax怎樣工作
Ajax複雜的原理已經超出了今天所要闡述的範圍,這裡只簡單描述一下。你的頁面上的JavaScript代碼能夠在不依賴於使用者的情況下和你的Web伺服器取得聯絡。這裡面起核心作用的就是JavaScript的XMLHttpRequest對象,這個對象能夠被就像使用者敲擊鍵盤或者時鐘事件在後台或者非同步觸發(也就是術語非同步JavaScript和XML)。如果你在Google Suggest中輸入“Ajax”後,就會得到像我輸入後得到的伺服器請求一樣:
1. www.google.com/complete/search?hl=en&js=true&qu=aj
2. www.google.com/complete/search?hl=en&js=true&qu=aja
3. www.google.com/complete/search?hl=en&js=true&qu=Ajax
在這個術語中的XML部分有一點會引起人們的誤解,其實這一部分是沒有任何意義的。它是從JavaScript對象得來的名字,同時許多Ajax風格的應用程式使用了XML,這個對象能夠就任何事務向伺服器發出一個請求。甚至JavaScript代碼本身也能夠被取回和評估。繼續完成我的輸入“Ajax example”,將會從Google的伺服器產生下面的回應:
- sendRPCDone(frameElement, “Ajax example”,
- new Array(”Ajax example”, “Ajax examples”),
- new Array(”153,000 results”, “177,000 results”),
- new Array(”"));
這將會給你一些關於強大的Ajax的暗示吧,它具有在運行中(on the fly)把新的JavaScript代碼加入到瀏覽器中的能力。然而,最佳化的方法看起來好像束縛了XML協定。舉個例子說明一下,比如Google產生了下面的這個東西:Ajax example 153,000;Ajax examples 177,000。
顯然,你可以在一個合適的表單中解釋這些XML資料,但我們要感謝JavaScript,它確實能夠在一些非常典型的限制條件下和大量討厭的IE Bug環境裡非常好的處理XML對象。為了協助你理解一些Ajax的問題,我在這裡給你介紹一個假想的旅行公司-“時代尖端旅行公司”。由於受到Ajax bug的推動,他們的主要Web開發人員Max Uptime為了建立一個這樣的應用程式,他決定混合使用Ajax,這樣,他走在時代尖端了。