本篇文章主要的講述了關於ajax的詳解,ajax的由來、ajax的原理、以及ajax的優勢劣勢。現在我們就一起來看這篇文章吧
什麼是ajax
其實ajax已經屬於老技術了,現在幾乎沒人不會用了,在這裡主要是把底層的東西給大家分享一下,以備應對裝逼的面試官。
ajax即“Asynchronous Javascript And XML”(非同步JavaScript和XML),是指一種建立互動式網頁應用的網頁開發技術。
通過在後台與伺服器進行少量資料交換,AJAX 可以使網頁實現非同步更新。這意味著可以在不重新載入整個網頁的情況下,對網頁的某部分進行更新。
ajax的由來
該技術在1998年前後得到了應用。
允許用戶端指令碼發送HTTP請求(XMLHTTP)的第一個組件由Outlook Web Access小組寫成。該組件原屬於微軟Exchange Server,並且迅速地成為了Internet Explorer 4.0[3]的一部分。部分觀察家認為,Outlook Web Access是第一個應用了Ajax技術的成功的商務應用程式,並成為包括Oddpost的網路郵件產品在內的許多產品的領頭羊。
但是,真正使得Ajax被福士所熟知卻是Google。
Google在它著名的互動應用程式中使用了非同步通訊,如Google討論群組、Google地圖、Google搜尋建議、Gmail等。Ajax這個詞由《Ajax: A New Approach to Web Applications》一文所創,該文的迅速流傳提高了人們使用該項技術的意識。另外,對Mozilla/Gecko的支援使得該技術走向成熟,變得更為易用。
ajax的原理
Ajax的工作原理相當於在使用者和伺服器之間加了—個中介層(AJAX引擎),使使用者操作與伺服器響應非同步化。並不是所有的使用者請求都提交給伺服器,像—些資料驗證和資料處理等都交給Ajax引擎自己來做,只有確定需要從伺服器讀取新資料時再由Ajax引擎代為向伺服器提交請求。
Ajax其核心有JavaScript、XmlHttpRequest、DOM對象組成,通過XmlHttpRequest對象來向伺服器發非同步請求,從伺服器獲得資料,然後用JavaScript來操作DOM而更新頁面。這其中最關鍵的一步就是從伺服器獲得請求資料。
讓我們來瞭解這幾個對象:
1) XMLHTTPRequest對象
Ajax的一個最大的特點是無需重新整理頁面便可向伺服器傳輸或讀寫資料(又稱無重新整理更新頁面),這一特點主要得益於XMLHTTP組件XMLHTTPRequest對象。
XMLHttpRequest 對象方法描述:
2) JavaScript
前端最吊炸天的語言。
3) DOM Document Object Model
DOM是給HTML和XML檔案使用的一組API。它提供了檔案的結構表述,讓你可以改變其中的內容及可見物。其本質是建立網頁與Script或程式語言溝通的橋樑。所有WEB開發人員可操作及建立檔案的屬性、方法及事件都以對象來展現(例如,document就代表“檔案本身“這個對像,table對象則代表HTML的表格對象等等)。 (想看更多就到topic.alibabacloud.comAJAX開發手冊欄目中學習)
這些對象可以由當今大多數的瀏覽器以Script來取用。一個用HTML或XHTML構建的網頁也可以看作是一組結構化的資料,這些資料被封在DOM(Document Object Model)中,DOM提供了網頁中各個對象的讀寫的支援。
4) XML
可擴充的標記語言(Extensible Markup Language)具有一種開放的、可擴充的、可自描述的語言結構,它已經成為網上資料和文檔傳輸的標準,用於其他應用程式交換資料 。
5) 綜合
Ajax引擎,實際上是一個比較複雜的JavaScript應用程式,用來處理使用者請求,讀寫伺服器和更改DOM內容。
JavaScript的Ajax引擎讀取資訊,並且互動地重寫DOM,這使網頁能無縫化重構,也就是在頁面已經下載完畢後改變頁面內容,這是我們一直在通過JavaScript和DOM在廣泛使用的方法,但要使網頁真正動態起來,不僅要內部的互動,還需要從外部擷取資料,在以前,我們是讓使用者來輸入資料並通過DOM來改變網頁內容的,但現在,XMLHTTPRequest,可以讓我們在不重載頁面的情況下讀寫伺服器上的資料,使使用者的輸入達到最少。
Ajax使WEB中的介面與應用分離(也可以說是資料與呈現分離),而在以前兩者是沒有清晰的界限的,資料與呈現分離的分離,有利於分工合作、減少非技術人員對頁面的修改造成的WEB應用程式錯誤、提高效率、也更加適用於現在的發布系統。也可以把以前的一些伺服器負擔的工作轉嫁到用戶端,利於用戶端閑置的處理能力來處理。
ajax的優勢
傳統的Web應用互動是由使用者觸發一個HTTP請求到伺服器,伺服器對其進行處理後,再返回一個新的HTML頁到用戶端。
每當伺服器處理用戶端提交的請求時,客戶都只能空閑等待,並且哪怕只是一次很小的互動、只需從伺服器端得到很簡單的一個資料,都要返回一個完整的HTML頁,而使用者每次都要浪費時間和頻寬去重新讀取整個頁面。
這個做法浪費了許多頻寬,由於每次應用的互動都需要向伺服器發送請求,應用的回應時間就依賴於伺服器的回應時間。這導致了使用者介面的響應比本地應用慢得多。
與此不同,AJAX應用可以僅向伺服器發送並取回必需的資料,它使用SOAP或其它一些基於XML的Web Service介面,並在用戶端採用JavaScript處理來自伺服器的響應。
因為在伺服器和瀏覽器之間交換的資料大量減少,結果我們就能看到響應更快的應用。同時很多的處理工作可以在發出請求的用戶端機器上完成,所以Web伺服器的處理時間也減少了。
其實就一句話,老子不用刷整個頁面就能看到變化了,改變的更迅速了,用戶端分擔了伺服器的工作,伺服器壓力更小了。
ajax的劣勢
資料、介面暴漏,安全性不太好。
本篇文章到這就結束了(想看更多就到topic.alibabacloud.comAJAX使用手冊欄目中學習),有問題的可以在下方留言提問。