標籤:des style http java color 使用 os 資料
看DRP的過程,重新學習了一遍Ajax,更深刻的體會到了Ajax所具有的魅力。Ajax是一種技術或者方法,更是一
種藝術。它讓我們的程式以一種更完美的姿態呈現在使用者面前。下面就讓我們一起走進Ajax的世界。
簡介
全名:
AsynchronousJavaScript and XML。
工作原理:
Ajax的工作原理相當於在使用者和伺服器之間加了—個中介層(AJAX引擎),使使用者操作與伺服器響應非同步化。並不
是所有的使用者請求都提交給伺服器,像—些資料驗證和資料處理等都交給Ajax引擎自己來做,只有確定需要從伺服器讀
取新資料時再由Ajax引擎代為向伺服器提交請求。
通過XmlHttpRequest對象來向伺服器發非同步請求,從伺服器獲得資料,然後用JavaScript來操作DOM而更新
頁面。
核心技術:
非同步
主要成員:
JavaScript、XMLHTTPRequest、DOM
應用:
新浪微博、Google地圖等
同步與非同步
提到Ajax,必然會提到同步和非同步。
同步:可以理解為單線程,也可以理解為“死心眼”。也就是在執行完一個函數或方法之後,一直等待系統返回
值或訊息,這時程式是出於阻塞的,只有接收到返回的值或訊息後才往下執行其他的命令。
非同步:可以理解為多線程(非同步肯定是多線程)。執行完函數或方法後,不必阻塞性地等待返回值或訊息,只需
要向系統委託一個非同步過程,那麼當系統接收到返回值或訊息時,系統會自動觸發委託的非同步過程,從而完成一個完
整的流程。
還不懂?同步就是你叫我去吃飯,我聽到了就和你去吃飯;如果沒有聽到,你就不停的叫,直到我告訴你聽到
了,才一起去吃飯。非同步就是你叫我,然後自己去吃飯,我得到訊息後可能立即走,也可能等到下班才去吃飯。所
以,要我請你吃飯就用同步的方法,要請我吃飯就用非同步方法,這樣你可以省錢。
而我們的Ajax只要就應用了非同步,來展現自己的魅力,提高使用者的體驗度。說到這裡就不得不提Ajax的核心對象
XMLHttpRequest。正是它的存在才可以讓Ajax向世人展現它強大的功能。
XMLHttpRequest介紹
這裡不詳細介紹XMLHttpRequest的屬性和方法,我們大致說一下XMLHttpRequest的工作過程:
- 為得到XMLHttpRequest對象執行個體的一個引用,可以建立一個新的執行個體,也可以訪問包含有XMLHttpRequest執行個體的一個變數。
- 告訴XMLHttpRequest對象,哪個函數會處理XMLHttpRequest對象狀態的改變,為此要把對象onreadystatechange的屬性設定為指向JavaScript函數的指標。
- 指定請求的屬性。XMLHttpRequest對象的open()方法會指定將發出的請求。open()方法取3個參數:一個是指示所用方法(通常是GET或POST)的串;一個是表示目標資源URL的串;一個是Boolean值,指示請求是否是非同步。
- 將請求發送給伺服器。XMLHttpRequest對象的send()方法把請求發送到指定的目標資源。send()方法接受一個參數,通常是一個串或一個DOM對象。這個參數作為請求體的一部分發送到目標URL。當向send()方法提供參數時,要確保open()中指定的方法是POST。如果沒有資料作為請求體的一部分被發送,則使用null。
這些步驟很直觀:你需要XMLHttpRequest對象的一個執行個體,要告訴它如果狀態有變化該怎麼做,還要告訴它向哪
裡發送請求以及如何發送請求,最後還需要指導XMLHttpRequest發送請求。再簡單點就是:建立出一個執行個體,告訴他
他需要做什麼,為誰服務。
優缺點
任何一件藝術品都有不是完美的,Ajax也一樣,自從Ajax出現之後,對它的討論就沒有停止過。優點顯而易見:
- 局部重新整理頁面,減少使用者心理和實際的等待時間,帶來更好的使用者體驗
- 減輕伺服器的負擔,按需取資料,最大程度的減少冗餘請求
- 基於xml標準化,並被廣泛支援,不需安裝外掛程式等
- 進一步促進頁面和資料的分離
但它的缺點也很明顯,有人總結出Ajax的“七宗罪”,這裡我們就不詳細說了,我大致總結一下它的缺點:
- ajax幹掉了back按鈕,即對瀏覽器後退機制的破壞。
- 對搜尋引擎的支援比較弱。
- 破壞異常處理機制
總結:
這是一篇協助大家瞭解Ajax的文章,沒有太多詳細的技術講解,Ajax是一門非常實用的技術,它可以很好的提高
客戶的體驗度,但它也不是完美的,很多情境下並不適合使用它,比如:需要替換大量文本的情況下。