Google學者

Google學者一、運用Ajax的主要端由 1、經過合適的Ajax應用達到更好的用戶體驗認識; 2、把曾經的一點服務器負擔的辦公轉嫁到客戶端,利於客戶端擱置的處置有經驗來處置,減緩服務器和帶寬的負擔,因此達到節省ISP的空間及帶寬租用成本的目標。 二、援用 Ajax這個概念的最早提出者Jesse James Garrett覺得: Ajax是Asynchronous JavaScriptand XML的減寫。 Ajax並不是一門新的語言或技術,它其實是幾項技術按一定的形式組合在一在同共的協作中施展各自的效用,它涵蓋: ·運用XHTML和CSS標准化閃現; ·運用DOM成功實現動態顯露和交互; ·運用XML和XSLT施行數值交換與處置; ·運用XMLHttpRequest施行異步數值讀取; ·最終用JavaScript綁定和處置全部數值; Ajax的辦公原理相當於在用戶和服務器之間加了—個半中腰層,運用戶操作與服務器響應異步化。並不是全部的用戶煩請都提交處理給服務器,像—些數值證驗和數值處置等都交付Ajax引擎自個兒來做,只有確認需求從服務器讀取新數值時再由Ajax引擎代為向服務器提交處理煩請。

三、大略敘述

固然Garrent列出了7條Ajax的構成技術,但私人覺得,所說的的Ajax其中心只有JavaScript、XMLHTTPRequest和DOM,假如所用數值款式為XML的話,還可以再加上XML這一項(Ajax從服務器端回返的數值可以是XML款式,也可以是文本等其它款式)。

在舊的交互形式中,由用戶被觸動引發一個HTTP煩請到服務器,服務器對其施行處置後再回返一個新的HTHL頁到客戶端,每當服務器處置客戶端提交處理的煩請時,客戶都只能空閑等待,況且姑且有只是一次細小的交互、只需從服務器端獲得很簡單的一個數值,都要回返一個完整的HTML頁,而用戶每每都要浪消耗時間間和帶寬去從新讀取整個兒頁面。

而運用Ajax後用戶從感受上幾乎全部的操作都會很快響應沒有頁面重載(白屏)的等待。

1、XMLHTTPRequest

Ajax的一個最大的獨特的地方是無須按F5頁面便可向服務器傳道輸送或讀寫數值(又叫作無按F5更新頁面),這一獨特的地方主使得益於XMLHTTP組件XMLHTTPRequest對象。這麼就可以向再發桌面兒應用手續只同服務器施行數值層面的交換,而無須每每都按F5界面也無須每每將數值處置的辦公提交處理給服務器來做,這麼即減緩了服務器的負擔又加快了響應速度、縮減了用戶等候時間。

最早應用XMLHTTP的是微軟,IE(IE5以上)經過准許研發擔任職務的人在Web頁面內裡運用XMLHTTP ActiveX組件擴展自身的功能,研發擔任職務的人可以無須從現時的Web頁面導航而直接傳道輸送數值到服務器上還是從服務器取數值。這個功能是很關緊的,由於它幫忙減損了無狀況連署的苦痛,它還可以擯除下載冗餘HTML的需求,因此增長進程項的速度。Mozilla(Mozilla1.0以上及NetScape7以上)做出的回答是開創它自個兒的秉承XML攝理類:XMLHttpRequest類。Konqueror (和Safari v1.2,一樣也是基於KHTML的瀏覽器)也支持XMLHttpRequest對象,而Opera也將在其v7.6x+往後的版本中支持XMLHttpRequest對象。對於大部分數事情狀況,XMLHttpRequest對象和XMLHTTP組件很相仿,辦法和屬性也大致相似,只是有一小局部屬性不支持。

XMLHttpRequest的應用:

·XMLHttpRequest對象在JS中的應用

var xmlhttp = new XMLHttpRequest();

·微軟的XMLHTTP組件在JS中的應用

var xmlhttp = new ActiveXObject(Microsoft.XMLHTTP);

var xmlhttp = new ActiveXObject(Msxml2.XMLHTTP);

XMLHttpRequest 對象辦法

/**

* Cross-browser XMLHttpRequest instantiation.

*/

if (typeof XMLHttpRequest == 」undefined」) {

XMLHttpRequest = function () {

var msxmls = [」MSXML3」, 」MSXML2」, 」Microsoft」]

for (var i=0; i msxmls.length; i++) {

try {

return new ActiveXObject(msxmls[i]+」.XMLHTTP」)

} catch (e) { }

}

throw new Error(“No XML component installed!”)

}

}

function createXMLHttpRequest() {

try {

// Attempt to create it “the Mozilla way”

if (window.XMLHttpRequest) {

return new XMLHttpRequest();

}

// Guess not – now the IE way

if (window.ActiveXObject) {

return new ActiveXObject(getXMLPrefix() + “.XmlHttp”);

}

}

catch (ex) {}

return false;

};

XMLHttpRequest 對象辦法

辦法描寫abort()休止現時煩請getAllResponseHeaders()作為字符串返問完整的headersgetResponseHeader(“headerLabel”)作為字符串返問單個的header標簽open(“method”,”URL”[,asyncFlag[,”userName”[, “密碼”]]])設置未決的煩請的目的 URL, 辦法, 和其它參變量send(content)送出煩請setRequestHeader(“label”, “value”)設置header並和煩請一塊兒送出

XMLHttpRequest 對象屬性

屬性描寫onreadystatechange狀況變更的事情被觸動引發器readyState對象狀況(integer):

0 = 未起初化

1 = 讀取中

2 = 已讀取

3 = 交互中

4 = 完成responseText服務器進程項回返數值的文本版本responseXML服務器進程項回返數值的兼容DOM的XML文檔對象status服務器回返的狀況碼, 如:404 = “文件末找到” 、200 =”成功”statusText服務器回返的狀況文本信息

2、JavaScript

JavaScript是一在瀏覽器中數量多運用的編程語言,,他曾經一直被踩咕為一門糟糕的語言(他的確在運用上比較單調),以在常被用來作一點用來臭美的小玩意和惡作劇或是枯燥瑣細的表單證驗。但事情的真實情況是,他是一門真正的編程語言,有著自已的標准並在各種瀏覽器中被廣泛支持。

3、DOM

Document Object Model。

DOM是給 HTML 和 XML 文件運用的一組 API。它供給了文件的結構述說,讓你可以變更那裡面的內容及可見物。實則質是樹立網頁與 Script 或手續語言溝通的橋梁。

全部WEB研發擔任職務的人可操作及樹立文件的屬性、辦法及事情都以對象來展出(例如,document 就代表『文件本身『這個對像,table 對象則代表 HTML 的表格對象等等)。這些個對象可以由當今大部分數的瀏覽器以 Script 來取用。

一個用HTML或XHTML構建的網頁也可以看作是一組結構化的數值,這些個數值被封在DOM(Document Object Model)中,DOM供給了網頁中各個對象的讀寫的支持。

4、XML

可擴展的標記語言(Extensible 馬克up Language)具備一種開放的、可擴展的、可自描寫的語言結構,它已經變成網上數值日文檔傳道輸送的標准。它是用來描寫數值結構的一種語言,就正如他的姓名同樣。他使對某些結構化數值的定義更加容易,況且可以經過他和其它應用手續交換數值。

5、綜合

Jesse James Garrett提到的Ajax引擎,其實是一個比較復雜的JavaScript應用手續,用來處置用戶煩請,讀寫服務器和更改DOM內部實質意義。

JavaScript的Ajax引擎讀取得信任息,況且相互作用地重寫DOM,這使網頁能無縫化重構,也就是在頁面已經下載完結後變更頁面內部實質意義,這是我們一直在經過JavaScript和DOM在廣泛運用的辦法,但要使網頁真正動態起來,不止要內裡的相互作用,還需求從外部取得數值,在曾經,我們是讓用戶來輸入數值並經過DOM來變更網頁內部實質意義的,但如今,XMLHTTPRequest,可以讓我們在不重載頁面的事情狀況下讀寫服務器上的數值,運用戶的輸入達到最少。

基於XML的網絡通訊也並不是新事情,其實FLASH和JAVA Applet都有不賴的表達,如今這種富交互在網頁上也可用了,基於標准化的並被廣泛支持和技術,況且不必插件或下載小手續。

Ajax是傳統WEB應用手續的一個轉變。曾經是服務器每派生的成HTML頁面並回返給客戶端(瀏覽器)。在大部分數網站中,眾多頁面中至少90百分之百都是同樣的,譬如:結構、款式、頁頭、頁尾、廣告等,所不一樣的只是一小局部的內部實質意義,但每每服務器都會生成全部的頁面再回返給客戶端,這無形中是一種耗費,無論是對於用戶的時間、帶寬、CPU耗用,仍然對於ISP的重價租用的帶寬厚溫和空間來說。假如按一頁來算,只能幾K或是幾十K有可能並不起眼,但像SINA每日要生成幾一百萬個頁面的大ISP來說,可謂是虧損很大的。而AJAX可以所為客戶端和服務器的半中腰層,來處置客戶端的煩請,並依據需求向服務器端送出煩請,用啥子就取啥子、用若乾就取若乾,就不會有數值的冗餘和耗費,減損了數值下載總量,並且更新頁面時無須重載所有內部實質意義,只更新需求更新的那局部即可,相對於純後臺處置並重載的形式縮減了用戶等待時間,也把對資源的耗費降到最低,基於標准化的並被廣泛支持和技術,況且不必插件或下載小手續,所以Ajax對於用戶和ISP來說是雙盈的。

Ajax使WEB中的界面與應用離合(也可謂是數值與閃現離合),而在曾經兩者是沒有清楚的界限的,數值與閃現離合的離合,有幫助於分工合作、減損非技術擔任職務的人對頁面的改正導致的WEB應用手續不正確、增長速率、也更加適合使用於如今的宣布系統。也可以把曾經的一點服務器負擔的辦公轉嫁到客戶端,利於客戶端擱置的處置有經驗來處置。

四、應用

Ajax理念的顯露出來,揭開了無按F5更新頁面時期的序幕,並有接替傳統web研發中認為合適而使用form(表單)當面送交形式更新web頁面的發展方向,可以總算一個裡程碑。但Ajax都不是適合使用於全部地方的,它的適合使用范圍是由它的特別的性質所表決的。

舉個應用的例子,是關於級聯點菜單方面的Ajax應用。

我們曾經的對級聯點菜單的處置就是這樣:

為了防止每每對點菜單的操作引動的重載頁面,不認為合適而使用每每調配使用後臺的形式,而是一次性將級聯點菜單的全部數值所有讀抽取來並寫入數組,而後依據用戶的操效用JavaScript來扼制它的子集項目標閃現,這麼固然解決了操作響應速度、不重載頁面以及防止向服務器次數多送出煩請的問題,不過假如用戶錯誤點菜單施行操作或只對點菜單中的一小批施行操作的話,那讀取的數值中的一小批便會變成冗餘數值而耗費用戶的資源,尤其是在點菜單結構復雜、數值量大的事情狀況下(譬如點菜單有眾多級、每一級菜又有上百個項目),這種弊病就更為冒尖。

假如在此案中應用Ajax後,最後結果便會有所改觀:

在起初化頁面時我們只讀出它的第1級的全部數值並顯露,在用戶操作一級點菜單那裡面一項時,融會貫通過Ajax向後臺煩請現時一級項目隸屬的二級子點菜單的全部數值,假如再接著煩請已經閃現的二級點菜單中的一項時,再向後面煩請所操作二級點菜單項對應的全部三級點菜單的全部數值,以資類推……這麼,用啥子就取啥子、用若乾就取若乾,就不會有數值的冗餘和耗費,減損了數值下載總量,並且更新頁面時無須重載所有內部實質意義,只更新需求更新的那局部即可,相對於後臺處置並重載的形式縮減了用戶等待時間,也把對資源的耗費降到最低。

這個之外,Ajax因為可以調配使用外部數值,也可以成功實現數值聚合的功能(當然要有相應權力委托),譬如微軟剛纔在三月十五號宣布的在線RSS閱覽器BETA版;還可以利於一點開放的數值,研發自已的一點應用手續,譬如用Amazon的數值作的一點新而別致的圖書搜索應用。

總之,Ajax適合使用於交互較多,次數多讀數值,數值分類令人滿意的WEB應用。

五、Ajax的優勢

1、減緩服務器的負擔。由於Ajax的根本理念是『按需取數值』,所以最大有可能在減損了冗餘煩請和響影對服務器導致的負擔;

2、無按F5更新頁面,減損用戶實際和心理等待時間;

首先,『按需取數值』的標准樣式減損了數值的實際讀取量,打個很形象的比喻,假如說重載的形式是從一個盡頭回到原點再到另一個盡頭的話,那末Ajax就是以一個盡頭為基點到了另一個盡頭;

圖5-1

圖5-2

其次,縱然要讀取比較大的數值,也無須像RELOAD同樣顯露出來白屏的事情狀況,因為Ajax是用XMLHTTP送出煩請獲得服務端回答數值,在不從新載入整個兒頁面的事情狀況下用Javascript操作DOM最後更新頁面的,所以在讀取數值的過程中,用戶所面臨的也不是白屏,而是原來的頁面狀況(還是可以加一個LOADING的提醒框讓用戶理解數值讀取的狀況),只有當收繳到所有數值後纔更新相應局部的內部實質意義,而這種更新也是剎那的,用戶幾乎感受不到。總之用戶是很敏銳的,它們能感受到你對它們的關切照顧,固然不太有可能立杆見影的效果,但會在用戶的心裡一點兒一滴的積累它們對網站的倚賴。

3、更好的用戶體驗認識;

4、也可以把曾經的一點服務器負擔的辦公轉嫁到客戶端,利於客戶端擱置的處置有經驗來處置,減緩服務器和帶寬的負擔,節省空間和帶寬租用成本;

5、Ajax因為可以調配使用外部數值;

6、基於標准化的並被廣泛支持和技術,況且不必插件或下載小手續;

7、Ajax使WEB中的界面與應用離合(也可謂是數值與閃現離合);

8、對於用戶和ISP來說是雙盈的。

六、Ajax的問題

1、一點手持設施(如手機、PDA等)如今還不可以美好的支持Ajax;

2、用JavaScript作的Ajax引擎,JavaScript的兼容性和DeBug都是讓首級痛的事;

3、Ajax的無按F5重載,因為頁面的變動沒有按F5重載那末表面化,所以容易給用戶帶來圍困並攪擾――用戶不太明白如今的數值是新的仍然已經更新過的;現存的解決有:在有關位置提醒、數值更新的地區范圍預設得比較表面化、數值更新後給用戶提醒等;

4、對流電視臺的支持沒有FLASH、Java Applet好;

七、總結語

更好的Ajax應用,需求更多的客戶端的研發,和對現時的WEB應用理念的深刻思考,並且令人滿意的用戶體驗認識,出處於為各個地方用戶思索問題的理念,而不僅純是某種技術。

三、大略敘述 固然Garrent列出了7條Ajax的構成技術,但私人覺得,所說的的Ajax其中心只有JavaScript、XMLHTTPRequest和DOM,假如所用數值款式為XML的話,還可以再加上XML這一項(Ajax從服務器端回返的數值可以是XML款式,也可以是文本等其它款式)。 在舊的交互形式中,由用戶被觸動引發一個HTTP煩請到服務器,服務器對其施行處置後再回返一個新的HTHL頁到客戶端,每當服務器處置客戶端提交處理的煩請時,客戶都只能空閑等待,況且姑且有只是一次細小的交互、只需從服務器端獲得很簡單的一個數值,都要回返一個完整的HTML頁,而用戶每每都要浪消耗時間間和帶寬去從新讀取整個兒頁面。 而運用Ajax後用戶從感受上幾乎全部的操作都會很快響應沒有頁面重載(白屏)的等待。 1、XMLHTTPRequest Ajax的一個最大的獨特的地方是無須按F5頁面便可向服務器傳道輸送或讀寫數值(又叫作無按F5更新頁面),這一獨特的地方主使得益於XMLHTTP組件XMLHTTPRequest對象。這麼就可以向再發桌面兒應用手續只同服務器施行數值層面的交換,而無須每每都按F5界面也無須每每將數值處置的辦公提交處理給服務器來做,這麼即減緩了服務器的負擔又加快了響應速度、縮減了用戶等候時間。 最早應用XMLHTTP的是微軟,IE(IE5以上)經過准許研發擔任職務的人在Web頁面內裡運用XMLHTTP ActiveX組件擴展自身的功能,研發擔任職務的人可以無須從現時的Web頁面導航而直接傳道輸送數值到服務器上還是從服務器取數值。這個功能是很關緊的,由於它幫忙減損了無狀況連署的苦痛,它還可以擯除下載冗餘HTML的需求,因此增長進程項的速度。Mozilla(Mozilla1.0以上及NetScape7以上)做出的回答是開創它自個兒的秉承XML攝理類:XMLHttpRequest類。Konqueror (和Safari v1.2,一樣也是基於KHTML的瀏覽器)也支持XMLHttpRequest對象,而Opera也將在其v7.6x+往後的版本中支持XMLHttpRequest對象。對於大部分數事情狀況,XMLHttpRequest對象和XMLHTTP組件很相仿,辦法和屬性也大致相似,只是有一小局部屬性不支持。 XMLHttpRequest的應用: ·XMLHttpRequest對象在JS中的應用 var xmlhttp = new XMLHttpRequest(); ·微軟的XMLHTTP組件在JS中的應用 var xmlhttp = new ActiveXObject(Microsoft.XMLHTTP); var xmlhttp = new ActiveXObject(Msxml2.XMLHTTP); XMLHttpRequest 對象辦法 /** * Cross-browser XMLHttpRequest instantiation. */ if (typeof XMLHttpRequest == 」undefined」) { XMLHttpRequest = function () { var msxmls = [」MSXML3」, 」MSXML2」, 」Microsoft」] for (var i=0; i msxmls.length; i++) { try { return new ActiveXObject(msxmls[i]+」.XMLHTTP」) } catch (e) { } } throw new Error(“No XML component installed!”) } } function createXMLHttpRequest() { try { // Attempt to create it “the Mozilla way” if (window.XMLHttpRequest) { return new XMLHttpRequest(); } // Guess not – now the IE way if (window.ActiveXObject) { return new ActiveXObject(getXMLPrefix() + “.XmlHttp”); } } catch (ex) {} return false; }; XMLHttpRequest 對象辦法 辦法描寫abort()休止現時煩請getAllResponseHeaders()作為字符串返問完整的headersgetResponseHeader(“headerLabel”)作為字符串返問單個的header標簽open(“method”,”URL”[,asyncFlag[,”userName”[, “密碼”]]])設置未決的煩請的目的 URL, 辦法, 和其它參變量send(content)送出煩請setRequestHeader(“label”, “value”)設置header並和煩請一塊兒送出 XMLHttpRequest 對象屬性 屬性描寫onreadystatechange狀況變更的事情被觸動引發器readyState對象狀況(integer): 0 = 未起初化 1 = 讀取中 2 = 已讀取 3 = 交互中 4 = 完成responseText服務器進程項回返數值的文本版本responseXML服務器進程項回返數值的兼容DOM的XML文檔對象status服務器回返的狀況碼, 如:404 = “文件末找到” 、200 =”成功”statusText服務器回返的狀況文本信息 2、JavaScript JavaScript是一在瀏覽器中數量多運用的編程語言,,他曾經一直被踩咕為一門糟糕的語言(他的確在運用上比較單調),以在常被用來作一點用來臭美的小玩意和惡作劇或是枯燥瑣細的表單證驗。但事情的真實情況是,他是一門真正的編程語言,有著自已的標准並在各種瀏覽器中被廣泛支持。 3、DOM Document Object Model。 DOM是給 HTML 和 XML 文件運用的一組 API。它供給了文件的結構述說,讓你可以變更那裡面的內容及可見物。實則質是樹立網頁與 Script 或手續語言溝通的橋梁。 全部WEB研發擔任職務的人可操作及樹立文件的屬性、辦法及事情都以對象來展出(例如,document 就代表『文件本身『這個對像,table 對象則代表 HTML 的表格對象等等)。這些個對象可以由當今大部分數的瀏覽器以 Script 來取用。 一個用HTML或XHTML構建的網頁也可以看作是一組結構化的數值,這些個數值被封在DOM(Document Object Model)中,DOM供給了網頁中各個對象的讀寫的支持。 4、XML 可擴展的標記語言(Extensible 馬克up Language)具備一種開放的、可擴展的、可自描寫的語言結構,它已經變成網上數值日文檔傳道輸送的標准。它是用來描寫數值結構的一種語言,就正如他的姓名同樣。他使對某些結構化數值的定義更加容易,況且可以經過他和其它應用手續交換數值。 5、綜合 Jesse James Garrett提到的Ajax引擎,其實是一個比較復雜的JavaScript應用手續,用來處置用戶煩請,讀寫服務器和更改DOM內部實質意義。 JavaScript的Ajax引擎讀取得信任息,況且相互作用地重寫DOM,這使網頁能無縫化重構,也就是在頁面已經下載完結後變更頁面內部實質意義,這是我們一直在經過JavaScript和DOM在廣泛運用的辦法,但要使網頁真正動態起來,不止要內裡的相互作用,還需求從外部取得數值,在曾經,我們是讓用戶來輸入數值並經過DOM來變更網頁內部實質意義的,但如今,XMLHTTPRequest,可以讓我們在不重載頁面的事情狀況下讀寫服務器上的數值,運用戶的輸入達到最少。 基於XML的網絡通訊也並不是新事情,其實FLASH和JAVA Applet都有不賴的表達,如今這種富交互在網頁上也可用了,基於標准化的並被廣泛支持和技術,況且不必插件或下載小手續。 Ajax是傳統WEB應用手續的一個轉變。曾經是服務器每派生的成HTML頁面並回返給客戶端(瀏覽器)。在大部分數網站中,眾多頁面中至少90百分之百都是同樣的,譬如:結構、款式、頁頭、頁尾、廣告等,所不一樣的只是一小局部的內部實質意義,但每每服務器都會生成全部的頁面再回返給客戶端,這無形中是一種耗費,無論是對於用戶的時間、帶寬、CPU耗用,仍然對於ISP的重價租用的帶寬厚溫和空間來說。假如按一頁來算,只能幾K或是幾十K有可能並不起眼,但像SINA每日要生成幾一百萬個頁面的大ISP來說,可謂是虧損很大的。而AJAX可以所為客戶端和服務器的半中腰層,來處置客戶端的煩請,並依據需求向服務器端送出煩請,用啥子就取啥子、用若乾就取若乾,就不會有數值的冗餘和耗費,減損了數值下載總量,並且更新頁面時無須重載所有內部實質意義,只更新需求更新的那局部即可,相對於純後臺處置並重載的形式縮減了用戶等待時間,也把對資源的耗費降到最低,基於標准化的並被廣泛支持和技術,況且不必插件或下載小手續,所以Ajax對於用戶和ISP來說是雙盈的。 Ajax使WEB中的界面與應用離合(也可謂是數值與閃現離合),而在曾經兩者是沒有清楚的界限的,數值與閃現離合的離合,有幫助於分工合作、減損非技術擔任職務的人對頁面的改正導致的WEB應用手續不正確、增長速率、也更加適合使用於如今的宣布系統。也可以把曾經的一點服務器負擔的辦公轉嫁到客戶端,利於客戶端擱置的處置有經驗來處置。 四、應用 Ajax理念的顯露出來,揭開了無按F5更新頁面時期的序幕,並有接替傳統web研發中認為合適而使用form(表單)當面送交形式更新web頁面的發展方向,可以總算一個裡程碑。但Ajax都不是適合使用於全部地方的,它的適合使用范圍是由它的特別的性質所表決的。 舉個應用的例子,是關於級聯點菜單方面的Ajax應用。 我們曾經的對級聯點菜單的處置就是這樣: 為了防止每每對點菜單的操作引動的重載頁面,不認為合適而使用每每調配使用後臺的形式,而是一次性將級聯點菜單的全部數值所有讀抽取來並寫入數組,而後依據用戶的操效用JavaScript來扼制它的子集項目標閃現,這麼固然解決了操作響應速度、不重載頁面以及防止向服務器次數多送出煩請的問題,不過假如用戶錯誤點菜單施行操作或只對點菜單中的一小批施行操作的話,那讀取的數值中的一小批便會變成冗餘數值而耗費用戶的資源,尤其是在點菜單結構復雜、數值量大的事情狀況下(譬如點菜單有眾多級、每一級菜又有上百個項目),這種弊病就更為冒尖。 假如在此案中應用Ajax後,最後結果便會有所改觀: 在起初化頁面時我們只讀出它的第1級的全部數值並顯露,在用戶操作一級點菜單那裡面一項時,融會貫通過Ajax向後臺煩請現時一級項目隸屬的二級子點菜單的全部數值,假如再接著煩請已經閃現的二級點菜單中的一項時,再向後面煩請所操作二級點菜單項對應的全部三級點菜單的全部數值,以資類推……這麼,用啥子就取啥子、用若乾就取若乾,就不會有數值的冗餘和耗費,減損了數值下載總量,並且更新頁面時無須重載所有內部實質意義,只更新需求更新的那局部即可,相對於後臺處置並重載的形式縮減了用戶等待時間,也把對資源的耗費降到最低。 這個之外,Ajax因為可以調配使用外部數值,也可以成功實現數值聚合的功能(當然要有相應權力委托),譬如微軟剛纔在三月十五號宣布的在線RSS閱覽器BETA版;還可以利於一點開放的數值,研發自已的一點應用手續,譬如用Amazon的數值作的一點新而別致的圖書搜索應用。 總之,Ajax適合使用於交互較多,次數多讀數值,數值分類令人滿意的WEB應用。 五、Ajax的優勢 1、減緩服務器的負擔。由於Ajax的根本理念是『按需取數值』,所以最大有可能在減損了冗餘煩請和響影對服務器導致的負擔; 2、無按F5更新頁面,減損用戶實際和心理等待時間; 首先,『按需取數值』的標准樣式減損了數值的實際讀取量,打個很形象的比喻,假如說重載的形式是從一個盡頭回到原點再到另一個盡頭的話,那末Ajax就是以一個盡頭為基點到了另一個盡頭; 圖5-1 圖5-2 其次,縱然要讀取比較大的數值,也無須像RELOAD同樣顯露出來白屏的事情狀況,因為Ajax是用XMLHTTP送出煩請獲得服務端回答數值,在不從新載入整個兒頁面的事情狀況下用Javascript操作DOM最後更新頁面的,所以在讀取數值的過程中,用戶所面臨的也不是白屏,而是原來的頁面狀況(還是可以加一個LOADING的提醒框讓用戶理解數值讀取的狀況),只有當收繳到所有數值後纔更新相應局部的內部實質意義,而這種更新也是剎那的,用戶幾乎感受不到。總之用戶是很敏銳的,它們能感受到你對它們的關切照顧,固然不太有可能立杆見影的效果,但會在用戶的心裡一點兒一滴的積累它們對網站的倚賴。 3、更好的用戶體驗認識; 4、也可以把曾經的一點服務器負擔的辦公轉嫁到客戶端,利於客戶端擱置的處置有經驗來處置,減緩服務器和帶寬的負擔,節省空間和帶寬租用成本; 5、Ajax因為可以調配使用外部數值; 6、基於標准化的並被廣泛支持和技術,況且不必插件或下載小手續; 7、Ajax使WEB中的界面與應用離合(也可謂是數值與閃現離合); 8、對於用戶和ISP來說是雙盈的。 六、Ajax的問題 1、一點手持設施(如手機、PDA等)如今還不可以美好的支持Ajax; 2、用JavaScript作的Ajax引擎,JavaScript的兼容性和DeBug都是讓首級痛的事; 3、Ajax的無按F5重載,因為頁面的變動沒有按F5重載那末表面化,所以容易給用戶帶來圍困並攪擾――用戶不太明白如今的數值是新的仍然已經更新過的;現存的解決有:在有關位置提醒、數值更新的地區范圍預設得比較表面化、數值更新後給用戶提醒等; 4、對流電視臺的支持沒有FLASH、Java Applet好; 七、總結語 更好的Ajax應用,需求更多的客戶端的研發,和對現時的WEB應用理念的深刻思考,並且令人滿意的用戶體驗認識,出處於為各個地方用戶思索問題的理念,而不僅純是某種技術。