總結1
總結2
AJAX全稱為“Asynchronous JavaScript and XML”(異步JavaScript和XML),是一種創建交互式網頁應用的網頁開發技術,
是幾種原有技術的結合體。它由下列技術組合而成。
???1.使用CSS和XHTML來表示。
???2.?使用DOM模型來交互和動態顯示。
???3.使用XMLHttpRequest來和服務器進行異步通信。
???4.使用javascript來綁定和調用。
Ajax的原理簡單
Ajax的工作原理相當于在用戶和服務器之間加了—個中間層(AJAX引擎),使用戶操作與服務器響應異步化。并不是所有的用戶請求都提交給服務器,像—些數據驗證和數據處理等都交給Ajax引擎自己來做, 只有確定需要從服務器讀取新數據時再由Ajax引擎代為向服務器提交請求。
Ajax的原理簡單來說通過XmlHttpRequest對象來向服務器發異步請求,從服務器獲得數據,然后用javascript來操作DOM而更新頁面。這其中最關鍵的一步就是從服務器獲得請求數據。要清楚這個過程和原理,我們必須對?XMLHttpRequest有所了解。
XMLHttpRequest是ajax的核心機制,它是在IE5中首先引入的,是一種支持異步請求的技術。簡單的說,也就是javascript可以及時向服務器提出請求和處理響應,而不阻塞用戶。達到無刷新的效果。
??所以我們先從XMLHttpRequest講起,來看看它的工作原理。
??首先,我們先來看看XMLHttpRequest這個對象的屬性。
??它的屬性有:
??onreadystatechange??每次狀態改變所觸發事件的事件處理程序。
??responseText?????從服務器進程返回數據的字符串形式。
??responseXML????從服務器進程返回的DOM兼容的文檔數據對象。
??status???????????從服務器返回的數字代碼,比如常見的404(未找到)和200(已就緒)
??status Text???????伴隨狀態碼的字符串信息
??readyState???????對象狀態值
0 (未初始化)?對象已建立,但是尚未初始化(尚未調用open方法)
1 (初始化)?對象已建立,尚未調用send方法
2 (發送數據) send方法已調用,但是當前的狀態及http頭未知
3 (數據傳送中)?已接收部分數據,因為響應及http頭不全,這時通過responseBody和responseText獲取部分數據會出現錯誤,
4 (完成)?數據接收完畢,此時可以通過通過responseXml和responseText獲取完整的回應數據
ajax的優點
???Ajax的給我們帶來的好處大家基本上都深有體會,在這里我只簡單的講幾點:
???1、最大的一點是頁面無刷新,在頁面內與服務器通信,給用戶的體驗非常好。
?2、使用異步方式與服務器通信,不需要打斷用戶的操作,具有更加迅速的響應能力。
?3、可以把以前一些服務器負擔的工作轉嫁到客戶端,利用客戶端閑置的能力來處理,減輕服務器和帶寬的負擔,節約空間和寬帶租用成本。并且減輕服務器的負擔,ajax的原則是“按需取數據”,可以最大程度的減少冗余請求,和響應對服務器造成的負擔。
??4、基于標準化的并被廣泛支持的技術,不需要下載插件或者小程序。
8、ajax的缺點
??下面我著重講一講ajax的缺陷,因為平時我們大多注意的都是ajax給我們所帶來的好處諸如用戶體驗的提升。而對ajax所帶來的缺陷有所忽視。
??下面所闡述的ajax的缺陷都是它先天所產生的。
???1、ajax干掉了back按鈕,即對瀏覽器后退機制的破壞。后退按鈕是一個標準的web站點的重要功能,但是它沒法和js進行很好的合作。這是ajax所帶來的一個比較嚴重的問題,因為用戶往往是希望能夠通過后退來取消前一次操作的。那么對于這個問題有沒有辦法?答案是肯定的,用過Gmail的知道,Gmail下面采用的ajax技術解決了這個問題,在Gmail下面是可以后退的,但是,它也并不能改變ajax的機制,它只是采用的一個比較笨但是有效的辦法,即用戶單擊后退按鈕訪問歷史記錄時,通過創建或使用一個隱藏的IFRAME來重現頁面上的變更。(例如,當用戶在Google Maps中單擊后退時,它在一個隱藏的IFRAME中進行搜索,然后將搜索結果反映到Ajax元素上,以便將應用程序狀態恢復到當時的狀態。)
但是,雖然說這個問題是可以解決的,但是它所帶來的開發成本是非常高的,和ajax框架所要求的快速開發是相背離的。這是ajax所帶來的一個非常嚴重的問題。
?2、安全問題
技術同時也對IT企業帶來了新的安全威脅,ajax技術就如同對企業數據建立了一個直接通道。這使得開發者在不經意間會暴露比以前更多的數據和服務器邏輯。ajax的邏輯可以對客戶端的安全掃描技術隱藏起來,允許黑客從遠端服務器上建立新的攻擊。還有ajax也難以避免一些已知的安全弱點,諸如跨站點腳步攻擊、SQL注入攻擊和基于credentials的安全漏洞等。
??3、對搜索引擎的支持比較弱。
??4、破壞了程序的異常機制。至少從目前看來,像ajax.dll,ajaxpro.dll這些ajax框架是會破壞程序的異常機制的。關于這個問題,我曾經在開發過程中遇到過,但是查了一下網上幾乎沒有相關的介紹。后來我自己做了一次試驗,分別采用ajax和傳統的form提交的模式來刪除一條數據……給我們的調試帶來了很大的困難。
?