国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

ajax技術和原理分析

2019-11-14 16:40:09
字體:
來源:轉載
供稿:網友

Ajax所包含的技術 
大家都知道ajax并非一種新的技術,而是幾種原有技術的結合體。它由下列技術組合而成。 
1.使用CSS和XHTML來表示。 
2. 使用DOM模型來交互和動態顯示。 
3.使用xmlHttPRequest來和服務器進行異步通信。 
4.使用javascript來綁定和調用。 

在上面幾中技術中,除了xmlhttpRequest對象以外,其它所有的技術都是基于web標準并且已經得到了廣泛使用的,XMLHttpRequest雖然目前還沒有被W3C所采納,但是它已經是一個事實的標準,因為目前幾乎所有的主流瀏覽器都支持它。 

ajax原理和XmlHttpRequest對象 

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、基于標準化的并被廣泛支持的技術,不需要下載插件或者小程序。 

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提交的模式來刪除一條數據……給我們的調試帶來了很大的困難。 
5、另外,像其他方面的一些問題,比如說違背了url和資源定位的初衷。例如,我給你一個url地址,如果采用了ajax技術,也許你在該url地址下面看到的和我在這個url地址下看到的內容是不同的。這個和資源定位的初衷是相背離的。 
6、一些手持設備(如手機、PDA等)現在還不能很好的支持ajax,比如說我們在手機的瀏覽器上打開采用ajax技術的網站時,它目前是不支持的,當然,這個問題和我們沒太多關系。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 太湖县| 大邑县| 威宁| 怀仁县| 中方县| 无锡市| 四子王旗| 巫溪县| 陈巴尔虎旗| 乐至县| 襄汾县| 淅川县| 九龙县| 兖州市| 江门市| 玉屏| 青海省| 石渠县| 抚顺市| 株洲市| 法库县| 台江县| 永康市| 鄂托克前旗| 闽侯县| 抚松县| 贵德县| 赤城县| 阳新县| 高碑店市| 册亨县| 铁岭县| 洛南县| 炎陵县| 澄迈县| 米林县| 东平县| 沿河| 界首市| 那曲县| 西丰县|