黃欣彬 張婭
摘要 運(yùn)用Ajax技術(shù)可以大大改變Web應(yīng)用程序的開發(fā)方式,實(shí)現(xiàn)無需刷新頁面就能實(shí)現(xiàn)頁面更新。本文主要分析Ajax的原理,是Ajax的核心對(duì)象,以及運(yùn)用Ajax技術(shù)的優(yōu)點(diǎn)及缺陷。
關(guān)鍵詞 Ajax 原理;XmlHttpRequest對(duì)象;Ajax優(yōu)勢
中圖分類號(hào) TP3 文獻(xiàn)標(biāo)識(shí)碼 A 文章編號(hào) 2095—6363(2016)13—0045—01
Ajax不是新研究開發(fā)的一種技術(shù),是一種使用現(xiàn)有標(biāo)準(zhǔn)的新方法,主要是多種原有技術(shù)結(jié)合在一起而形成的一種技術(shù)。主要通過使用CSS和XHTML來實(shí)現(xiàn)表示,實(shí)現(xiàn)交互和動(dòng)態(tài)顯示通過DOM模型來完成,通過XMLHttpRequest來實(shí)現(xiàn)與服務(wù)器進(jìn)行異步通信,并且通過JavaScript來完成相關(guān)綁定和調(diào)用。除XmlHttpRequest對(duì)象外,其他技術(shù)在網(wǎng)絡(luò)方面都得到很廣泛的運(yùn)用。
XMLHttpRequest雖然目前還沒有被W3C所采納,但是它已經(jīng)是一個(gè)事實(shí)的標(biāo)準(zhǔn),因?yàn)槟壳皫缀跛械闹髁鳛g覽器都支持它。
1 Ajax核心原理
Ajax的核心原理主要是運(yùn)用XmlHttpRequest對(duì)象向服務(wù)器發(fā)出異步請求,從而完成獲取服務(wù)器的數(shù)據(jù)操作,基于JavaScript技術(shù)來操作DOM實(shí)現(xiàn)頁面的更新,即無需加載整個(gè)網(wǎng)頁內(nèi)容的情況下實(shí)現(xiàn)網(wǎng)頁的差異更新。其關(guān)鍵步驟是請求數(shù)據(jù)如何從服務(wù)器獲得,主要通過XMLHttpRequest對(duì)象來實(shí)現(xiàn)。同時(shí)Ajax的遵守原則“按需取數(shù)據(jù)”,可以最大程度地減少“冗余請求”,降低服務(wù)器響應(yīng)的負(fù)荷。
2 XmlHttpRequest對(duì)象
AIjax的核心機(jī)制是XMLHttpRequest對(duì)象,最先在IE5中使用,能夠完成異步請求的一種技術(shù),即通過JavaScript快速向服務(wù)器發(fā)起請求和處理響應(yīng),并且不會(huì)阻塞用戶,實(shí)現(xiàn)無刷新的效果。XMLHttpRequest這個(gè)對(duì)象的屬性。
onreadystatechange所觸發(fā)事件的處理程序所表現(xiàn)的狀態(tài);
responseText實(shí)現(xiàn)數(shù)據(jù)的字符串從服務(wù)器進(jìn)程返回串形式;
responseXML從服務(wù)器進(jìn)程返回的DOM兼容的文檔數(shù)據(jù)對(duì)象;
status從服務(wù)器返回的數(shù)字代碼,200(已就緒)和404(未找到);
status Text伴隨狀態(tài)碼的字符串信息;
readyState狀態(tài)值(0,1,2,3,4)。
3 Ajax技術(shù)的優(yōu)勢
運(yùn)用Ajax技術(shù)到Web中都會(huì)感覺該技術(shù)所帶來的優(yōu)點(diǎn)。
1)使用Ajax會(huì)開發(fā)出動(dòng)態(tài)性非常強(qiáng)的Web界面,在一些運(yùn)用Ajax技術(shù)的瀏覽器的搜索框輸入關(guān)鍵字時(shí),服務(wù)器將快速接收到這些字符,服務(wù)器將快速返回一個(gè)搜索建議的列表。
2)頁面不需全部加載刷新,快速完成服務(wù)器與頁面內(nèi)的通信,給用戶的體驗(yàn)非常好。頁面與服務(wù)器采用異步方式,防止打斷用戶的操作,從而其響應(yīng)能力更加快速的完成。
3)利用客戶端的閑置能力分擔(dān)服務(wù)器承載的一部分工作,從而降低服務(wù)器的負(fù)荷,同時(shí)也減少帶寬的負(fù)擔(dān),節(jié)約公共資源,降低成本。
4)運(yùn)用JavaScript的難度得到簡化。獨(dú)特JavaScript的靈活語法以及其物件觀念,讓其能夠更好深入使用文件物件模型(DOM)與CSS的強(qiáng)大操控能力,以便更好應(yīng)用瀏覽器XMLHttpRequest物件,簡化JavaScript的便用難度,更好地使開發(fā)人員專注在開發(fā)工作上。
5)瀏覽器的相容性問題得到一定的解決。對(duì)文件的解析與語法的支援在不同瀏覽器結(jié)果是有一定的差異,在瀏覽器不同版本上有時(shí)也會(huì)表現(xiàn)出不同的行為,從而讓JavaScript應(yīng)用程序出現(xiàn)一定的瓶頸,而采用Ajax框架能提前解放設(shè)計(jì)人員對(duì)瀏覽器相容性的問題。
4 Ajax技術(shù)的缺點(diǎn)
大家平時(shí)使用一種技術(shù)更多的注意其優(yōu)點(diǎn),但也不能忽視其所帶來的缺陷。而Ajax技術(shù)也有自身的缺陷。
1)程序異常處理機(jī)制的缺陷。Ajax框架本身會(huì)直接造成程序的異常機(jī)制遭到破壞,若采用Ajax和傳統(tǒng)的form提交的模式來刪除一條數(shù)據(jù),給代碼的編寫和調(diào)試帶來許多困難。
2)Ajax技術(shù)中沒后退功能,這主要是和JavaScript無法實(shí)現(xiàn)很好的結(jié)合。這就與IE后退功能相違背,而后退功能是Web站點(diǎn)的標(biāo)配功能。這也是Ajax技術(shù)自身存在的重要缺陷,但可通過較笨的辦法解決,即在Gmail中運(yùn)用Ajax技術(shù)解決沒有后退功能,但沒有改變Ajax技術(shù)的退出機(jī)制。在Gmail中運(yùn)用AjaX技術(shù),瀏覽者可單擊IE后退按鈕查看歷史記錄時(shí),通過創(chuàng)建或使用一個(gè)隱藏的IFRAME來完成頁面上的差異變更,即單擊后退時(shí),在隱藏的IFRAME中實(shí)現(xiàn)搜索,并且在Ajax元素中反映出搜索結(jié)果,以便將應(yīng)用程序狀態(tài)恢復(fù)到當(dāng)時(shí)的狀態(tài),但是它所帶來的開發(fā)成本是非常高的,和Ajax技術(shù)所要求的快速開發(fā)是相背離的。這是Ajax所帶來的一個(gè)非常嚴(yán)重的問題。
3)安全因素。一項(xiàng)技術(shù)的運(yùn)用也給IT企業(yè)直接或間接產(chǎn)生了新的安全威脅,而通過Ajax技術(shù)建立一條通往企業(yè)數(shù)據(jù)的直接通道,這就會(huì)造成更多的數(shù)據(jù)和服務(wù)器邏輯會(huì)在不經(jīng)意間比以前暴露得更多。同時(shí)Ajax技術(shù)的邏輯會(huì)隱藏對(duì)客戶端的安全掃描技術(shù),將給黑客從遠(yuǎn)端服務(wù)器上建立新的攻擊提供了新的機(jī)會(huì)。同時(shí)Ajax也存在基于credentials的安全漏洞、跨站點(diǎn)腳步攻擊和等SOL注入攻擊。
4)Ajax沒有遵循資源定位和url的機(jī)制,手持設(shè)備(如手機(jī)、Pad等)不能非常靈活的支持Ajax技術(shù),在手持設(shè)備的瀏覽器上打開運(yùn)用Ajax技術(shù)設(shè)計(jì)的網(wǎng)站時(shí),現(xiàn)在還不能很好的支持,需要有待的完善和改進(jìn)。
5結(jié)論
Ajax不是一種萬能的技術(shù),它有適合自身應(yīng)用的場合,并與現(xiàn)有的動(dòng)態(tài)頁面技術(shù)互補(bǔ)融合,在未來的軟件技術(shù)發(fā)展中,相信Ajax將擔(dān)負(fù)起更多的用途,在Web應(yīng)用中發(fā)揮重要的作用。endprint