Ajax: Asynchronous JavaScript and Xml , 異步js腳本和xml , 常用來實現(xiàn)頁面局部的異步刷新, 對提高用戶體驗有很大幫助. Xml在多語言時較有優(yōu)勢, 但Ajax技術實際上較多采用Json對象而不是Xml來處理數(shù)據(jù).
(一) Ajax歷史....了解性知識
Ajax歸屬于Web前端開發(fā)技術, 與javascript有著異常緊密的聯(lián)系. Ajax就是一種實現(xiàn)異步通信無刷新的技術, 而這種技術可以有很多種實現(xiàn)方式. 瀏覽器的鼻祖網(wǎng)景(NetScape)公司最早發(fā)明了LiveScript腳本語言, 用來豐富網(wǎng)頁元素的表現(xiàn)形式, 使網(wǎng)頁能夠呈現(xiàn)出動態(tài)效果. 隨后的歷次改版升級后就誕生了JavaScript語言, 與此同期微軟(Microsoft)公司也看到互聯(lián)網(wǎng)的前景, 開始涉足并發(fā)力于互聯(lián)網(wǎng)行業(yè), 推出了JScript語言, 可惜沒有JavaScript成熟, 發(fā)展遲滯. 最終微軟公司對互聯(lián)網(wǎng)的決心促成了MS對NS的漫長曲折的收購歷程.
這里提一下, 動態(tài)HTML語言(Dynamic Hyper Text Markup Language)就是將javascript放在Dom樹的元素節(jié)點中, 為元素提供動態(tài)展示行為.
(二)Web前端開發(fā)的兩個思路: a. JavaScript + XHR + CSS b. Flash ---> 瀏覽器插件 ---> Flex(Adobe); Silverlight4.0(MS)
1. Ajax: 以MS的XHR(XMLHttpRequest)為核心 ---> Ajax
2. flash: MicroMedia ---> 被Adobe收購 ---> flex (涵蓋了ActionScript和Rich Internet Application等技術的組合)
3. SilverLight: 微軟為了抗衡flex而推出的SilverLight
備注:
為了能夠在后臺異步與服務器進行通訊, 微軟在IE中添加了兩個組件: 負責與服務器通訊的組件(XMLHTTPRequest)和XML的處理組件. 采用XML作為數(shù)據(jù)交換的載體, 在多語言處理時具有優(yōu)勢, 但xml的處理成本較高, 實際上Ajax中通常采用Json對象在客戶端瀏覽器和服務器之間傳遞數(shù)據(jù).
網(wǎng)頁的生成過程其實是由服務器上的一組程序來完成的, 這樣為了在客戶端的JS語言和服務器端的C#語言傳遞數(shù)據(jù), .Net提供了Json序列化和反序列化器, 來提供服務器端C#對象和Json對象之間的轉(zhuǎn)換. 而在瀏覽器端可以使用eval()函數(shù)獲取服務器傳遞過來的Json串轉(zhuǎn)化為Json對象.
(三)Ajax解決什么問題
我們都知道, 在客戶端向服務器請求一個頁面時, 服務器首先動態(tài)的計算并生成出頁面, 然后再發(fā)給客戶端. 客戶端瀏覽器順序編譯并呈現(xiàn)頁面.
在沒有Ajax時: 假如說頁面有個用戶驗證控件, 那么在客戶端瀏覽器呈現(xiàn)用戶驗證控件時, 會等待服務器的驗證結(jié)果, 收到結(jié)果后才能繼續(xù)呈現(xiàn)頁面元素. 而這個驗證過程通常要進行讀取數(shù)據(jù)庫等操作, 這就是所謂的同步方式. 而這種方式, 會造成網(wǎng)頁呈現(xiàn)的假死狀態(tài).
在使用Ajax后: 同樣是驗證控件, 客戶端提交了驗證請求后, 便繼續(xù)順序呈現(xiàn)其他元素. 當取得驗證結(jié)果后, 由javascript在客戶端修改內(nèi)存中的DOM對象后并呈獻給用戶(注意: 這里修改的只是內(nèi)存中的DOM對象, 而客戶端接收的頁面文件并沒有修改). 這樣, 使用異步的方式, 就不會出現(xiàn)假死狀態(tài), 同時客戶端也節(jié)省了等待服務器返回結(jié)果時的時間開銷.
新聞熱點
疑難解答
圖片精選