一、什么是AJAX?
AJAX = 異步 JavaScript 和 XML。
AJAX 是一種在無(wú)需重新加載整個(gè)網(wǎng)頁(yè)的情況下,就能夠更新部分網(wǎng)頁(yè)的技術(shù)。也是一種用于創(chuàng)建快速動(dòng)態(tài)網(wǎng)頁(yè)的技術(shù)。
二、為什么要使用AJAX
通過(guò)在后臺(tái)與服務(wù)器進(jìn)行少量數(shù)據(jù)交換,AJAX 可以使網(wǎng)頁(yè)實(shí)現(xiàn)異步更新。這意味著可以在不重新加載整個(gè)網(wǎng)頁(yè)的情況下,對(duì)網(wǎng)頁(yè)的某部分進(jìn)行更新。
傳統(tǒng)的網(wǎng)頁(yè)(不使用 AJAX)如果需要更新內(nèi)容,必需重載整個(gè)網(wǎng)頁(yè)面。
(有很多使用 AJAX 的應(yīng)用程序案例:新浪微博、Google 地圖、開心網(wǎng)等等。)
三、我所理解的XMLHttpRequest對(duì)象
XMLHttpRequest 對(duì)象用于在后臺(tái)與服務(wù)器交換數(shù)據(jù)。
通過(guò)XMLHttpRequest 對(duì)象我們可以實(shí)現(xiàn):
1.在不重新加載頁(yè)面的情況下更新網(wǎng)頁(yè)
2.在頁(yè)面已加載后從服務(wù)器請(qǐng)求數(shù)據(jù)
3.在頁(yè)面已加載后從服務(wù)器接收數(shù)據(jù)
4.在后臺(tái)向服務(wù)器發(fā)送數(shù)據(jù)
5.所有現(xiàn)代的瀏覽器都支持 XMLHttpRequest 對(duì)象。
創(chuàng)建 XMLHttpRequest 對(duì)象的語(yǔ)法:
xmlhttp=new XMLHttpRequest();
老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 對(duì)象:
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
四、AJAX的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
1.不刷新頁(yè)面更新數(shù)據(jù)。
可以減少用戶等待時(shí)間,提升用戶體驗(yàn)。
2.異步方式與服務(wù)器通信。
AJAX使用異步方式與服務(wù)器通信,不需要打斷用戶的操作,具有更加迅速的響應(yīng)能力。
3.前后端負(fù)載平衡。
AJAX的原則是“按需取數(shù)據(jù)”,減少不必要的請(qǐng)求和響應(yīng)。
4.基于標(biāo)準(zhǔn)被廣泛支持。
5.前后端分離
缺點(diǎn)
1.AJAX中沒(méi)有Back和History功能,即對(duì)瀏覽器機(jī)制的破壞。
后退按鈕是一個(gè)標(biāo)準(zhǔn)的web站點(diǎn)的重要功能,但是它沒(méi)法和js進(jìn)行很好的合作。這是ajax所帶來(lái)的一個(gè)比較嚴(yán)重的問(wèn)題,因?yàn)橛脩敉窍M軌蛲ㄟ^(guò)后退來(lái)取消前一次操作的。那么對(duì)于這個(gè)問(wèn)題有沒(méi)有辦法?答案是肯定的,用過(guò)Gmail的知道,Gmail下面采用的ajax技術(shù)解決了這個(gè)問(wèn)題,在Gmail下面是可以后退的,但是,它也并不能改變ajax的機(jī)制,它只是采用的一個(gè)比較笨但是有效的辦法,即用戶單擊后退按鈕訪問(wèn)歷史記錄時(shí),通過(guò)創(chuàng)建或使用一個(gè)隱藏的IFRAME來(lái)重現(xiàn)頁(yè)面上的變更。(例如,當(dāng)用戶在Google Maps中單擊后退時(shí),它在一個(gè)隱藏的IFRAME中進(jìn)行搜索,然后將搜索結(jié)果反映到Ajax元素上,以便將應(yīng)用程序狀態(tài)恢復(fù)到當(dāng)時(shí)的狀態(tài)。)
但是,雖然說(shuō)這個(gè)問(wèn)題是可以解決的,但是它所帶來(lái)的開發(fā)成本是非常高的,和ajax框架所要求的快速開發(fā)是相背離的。這是ajax所帶來(lái)的一個(gè)非常嚴(yán)重的問(wèn)題。
2.AJAX的安全問(wèn)題。
AJAX技術(shù)給用戶帶來(lái)很好的用戶體驗(yàn)的同時(shí)也對(duì)IT企業(yè)帶來(lái)了新的安全威脅,Ajax技術(shù)就如同對(duì)企業(yè)數(shù)據(jù)建立了一個(gè)直接通道。這使得開發(fā)者在不經(jīng)意間會(huì)暴露比以前更多的數(shù)據(jù)和服務(wù)器邏輯。
3.對(duì)搜索引擎支持較弱。
對(duì)搜索引擎的支持比較弱。如果使用不當(dāng),AJAX會(huì)增大網(wǎng)絡(luò)數(shù)據(jù)的流量,從而降低整個(gè)系統(tǒng)的性能。
4.破壞程序的異常處理機(jī)制。
至少?gòu)哪壳翱磥?lái),像ajax.dll,ajaxpro.dll這些ajax框架是會(huì)破壞程序的異常機(jī)制的。后來(lái)我自己做了一次試驗(yàn),分別采用ajax和傳統(tǒng)的form提交的模式來(lái)刪除一條數(shù)據(jù)……給我們的調(diào)試帶來(lái)了很大的困難。
5.AJAX不能很好支持移動(dòng)設(shè)備。
6.資源定位的初衷是相背離的。
7.如果用戶禁用了JS,網(wǎng)站就取不到數(shù)據(jù)。
https://www.cnblogs.com/tylerdonet/p/3520862.html
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。