什么是Ajax?
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
[p]ajax的定義[/p] [p]ajax不是一個(gè)技術(shù),它實(shí)際上是幾種技術(shù),每種技術(shù)都有其獨(dú)特這處,合在一起就成了一個(gè)功能強(qiáng)大的新技術(shù)。ajax包括:[/p] [p]xhtml和css[/p] [p]使用文檔對(duì)象模型(document object model)作動(dòng)態(tài)顯示和交互[/p] [p]使用xml和xslt做數(shù)據(jù)交互和操作[/p] [p]使用xmlhttprequest進(jìn)行異步數(shù)據(jù)接收[/p] [p]使用javascript將它們綁定在一起[/p] [p]傳統(tǒng)的web應(yīng)用模型工作起來就象這樣:大部分界面上的用戶動(dòng)作觸發(fā)一個(gè)連接到web服務(wù)器的http請(qǐng)求。[/p] [p]服務(wù)器完成一些處理—接收數(shù)據(jù),處理計(jì)算,再訪問其它的數(shù)據(jù)庫(kù)系統(tǒng),最后返回一個(gè)html頁面到客戶端。這是一個(gè)老套的模式,自采用超文本作為web使用以來,一直都這樣用, 但看過《the elements of user experience》的讀者一定知道,是什么限制了web界面沒有桌面軟件那么好用。[/p] [p]圖1: 傳統(tǒng)web應(yīng)用模型(左)與ajax模型的比較(右).[br]這種舊的途徑讓我們認(rèn)識(shí)到了許多技術(shù),但它不會(huì)產(chǎn)生很好的用戶體驗(yàn)。當(dāng)服務(wù)器正在處理自己的事情的時(shí)候,用戶在做什么?沒錯(cuò),等待。每一個(gè)動(dòng)作,用戶都要等待。[/p] [p]很明顯,如果我們按桌面程序的思維設(shè)計(jì)web應(yīng)用,我們不愿意讓用戶總是等待。當(dāng)界面加載后,為什么還要讓用戶每次再花一半的時(shí)間從服務(wù)取數(shù)據(jù)?實(shí)際上,為什么老是讓用戶看到程序去服務(wù)器取數(shù)據(jù)呢?[/p] [p]ajax如何不同凡響[/p] [p]通過在用戶和服務(wù)器之間引入一個(gè)ajax引擎,可以消除web的開始-停止-開始-停止這樣的交互過程. 它就像增加了一層機(jī)制到程序中,使它響應(yīng)更靈敏,而它的確做到了這一點(diǎn)。[/p] [p]不像加載一個(gè)頁面一樣,在會(huì)話的開始,瀏覽器加載了一個(gè)ajax引擎—采用javascript編寫并且通常在一個(gè)隱藏frame中。這個(gè)引擎負(fù)責(zé)繪制用戶界面以及與服務(wù)器端通訊。ajax引擎允許用異步的方式實(shí)現(xiàn)用戶與程序的交互–不用等待服務(wù)器的通訊。所以用戶再不不用打開一個(gè)空白窗口,看到等待光標(biāo)不斷的轉(zhuǎn),等待服務(wù)器完成后再響應(yīng)。[/p] [p]圖 2: 傳統(tǒng)web應(yīng)用的同步交互過程(上)和ajax應(yīng)用的異步交互過程的比較(下).[br]通常要產(chǎn)生一個(gè)http請(qǐng)求的用戶動(dòng)作現(xiàn)在通過javascript調(diào)用ajax引擎來代替. 任何用戶動(dòng)作的響應(yīng)不再要求直接傳到服務(wù)器—例如簡(jiǎn)單的數(shù)據(jù)校驗(yàn),內(nèi)存中的數(shù)據(jù)編輯,甚至一些頁面導(dǎo)航—引擎自己就可以處理它. 如果引擎需要從服務(wù)器取數(shù)據(jù)來響應(yīng)用戶動(dòng)作—假設(shè)它提交需要處理的數(shù)據(jù),載入另外的界面代碼,或者接收新的數(shù)據(jù)—引擎讓這些工作異步進(jìn)行,通常使用xml, 不用再擔(dān)誤用戶界面的交互。[/p] 該文章在 2010/4/27 3:08:45 編輯過 |
相關(guān)文章
|