IT兄弟连 JavaWeb教程 AJAX定义以及解决的问题
2019獨角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
Ajax是"Asynchronous JavaScript And XML"的縮寫(即:異步的JavaScript和XML),是一種實現(xiàn)無頁面刷新獲取服務(wù)器數(shù)據(jù)的混合技術(shù),Ajax這個概念的最早提出者是Jesse James Garrett。我們知道,互聯(lián)網(wǎng)最主要的功能在于"資源交換",當(dāng)初發(fā)明互聯(lián)網(wǎng)的科學(xué)家們也是基于這個動機(jī)。雖然在互聯(lián)網(wǎng)中"資源交換"的主體都是計算機(jī)。但為了方便交流,我們通常將獲取資源的一方稱為客戶端(主要的工具是瀏覽器),而將派發(fā)資源的一方稱為服務(wù)端。
在AJAX技術(shù)出現(xiàn)之前,如果瀏覽器需要從服務(wù)器請求資源,其交互模式為"客戶端發(fā)出請求 -> 服務(wù)端接收請求并返回相應(yīng)HTML文檔 -> 頁面刷新,客戶端加載新的HTML文檔"。確實,這種交互模式十分簡潔明了,而且非常符合人的直覺,對于那時游走于互聯(lián)網(wǎng)中的極客而言,也確實夠用了。但是隨著時代的進(jìn)步,互聯(lián)網(wǎng)漸漸不只是極客們的娛樂場,越來越多商業(yè)化網(wǎng)站的出現(xiàn),使互聯(lián)網(wǎng)不再局限于滿足人們"資源交換"的需求,人們開始期待能夠在互聯(lián)網(wǎng)中獲得更好的"使用體驗",而隨著用戶點擊不斷刷新頁面的交互方式顯然很難討人喜歡。
AJAX技術(shù)的問世,不僅通過阻止瀏覽器接受響應(yīng)時刷新頁面提升了互聯(lián)網(wǎng)用戶的使用體驗,還使開發(fā)者能夠以更加微觀的視角重新思考互聯(lián)網(wǎng)應(yīng)用的構(gòu)建,從此,開發(fā)者將在"數(shù)據(jù)"層面而不是"資源"層面以更高的自由 度構(gòu)建網(wǎng)站和Web應(yīng)用。
有沒有辦法在頁面數(shù)據(jù)變動時,只向服務(wù)器請求新的數(shù)據(jù),并且在阻止頁面刷新的情況下,動態(tài)的替換頁面中展示的數(shù)據(jù)呢? -- 答案正是"AJAX"。
再試想這樣一種情景,當(dāng)用戶點擊頁面中的某個按鈕向服務(wù)器發(fā)送請求時,頁面本質(zhì)上只是一些數(shù)據(jù)發(fā)生了變化,而此時服務(wù)器卻要將重繪的整個頁面再返回給瀏覽器加載,這顯然有悖于程序員的"DRY"原則,而且明明只是一些數(shù)據(jù)的變化卻迫使服務(wù)器要返回整個HTML文檔,這本身也會給網(wǎng)絡(luò)帶寬帶來不必要的開銷。
經(jīng)典Web應(yīng)用程序模型的工作方式如下:
用戶界面中的大多數(shù)用戶操作都會將HTTP請求觸發(fā)返回Web服務(wù)器。服務(wù)器進(jìn)行一些處理-檢索數(shù)據(jù)、處理數(shù)字、與傳統(tǒng)系統(tǒng)對話,然后向客戶端返回HTML頁面。這種方法具有很多技術(shù)意義,但是它并不能為用戶帶來出色的體驗。雖然服務(wù)器正在做它應(yīng)該做的事情,但是在服務(wù)器工作時用戶只能等待它完成。
圖1? 傳統(tǒng)Web應(yīng)用與使用AJAX的Web應(yīng)用
?
顯然,如果我們重新設(shè)計Web應(yīng)用程序,我們就不會讓用戶等待。我們通過在用戶和服務(wù)器之間引入中介(Ajax引擎),Ajax應(yīng)用程序消除了Web上交互的啟動-停止-啟動-停止性質(zhì),瀏覽器不是加載網(wǎng)頁,而是在會話開始時加載一個Ajax引擎-用JavaScript編寫。該引擎負(fù)責(zé)呈現(xiàn)用戶看到的界面并代表用戶與服務(wù)器通信。Ajax引擎允許用戶與應(yīng)用程序的交互異步進(jìn)行-與服務(wù)器的通信無關(guān)。因此,用戶就不會在盯著空白的瀏覽器窗口和等待載入的圖標(biāo)或者等待服務(wù)器處理結(jié)束了。
同步的過程只有允許有一個進(jìn)程在執(zhí)行,比如服務(wù)端在處理數(shù)據(jù)的時候,那么客戶端不能進(jìn)行任何操作,處于一個阻塞的一個狀態(tài)。
使用ajax的程序,服務(wù)端在處理數(shù)據(jù)的時候,客戶端瀏覽器依然可以執(zhí)行其他的操作,并沒有阻塞狀態(tài),也就是一個時間段內(nèi)可以有多個進(jìn)程在執(zhí)行。
圖2? 傳統(tǒng)Web應(yīng)用運行流程
?
圖3? 使用AJAX的Web應(yīng)用運行流程
轉(zhuǎn)載于:https://my.oschina.net/u/4125915/blog/3057589
總結(jié)
以上是生活随笔為你收集整理的IT兄弟连 JavaWeb教程 AJAX定义以及解决的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何解决90%的报表设计难题?300张报
- 下一篇: Vim 4 常用插件