abstrait:一. ajax的簡(jiǎn)介 ajax 的全稱是Asynchronous(異步的意思) JavaScript and XML,是一種創(chuàng)建交互式網(wǎng)頁(yè)應(yīng)用的網(wǎng)頁(yè)開(kāi)發(fā)技術(shù) ajax技術(shù)的流行得益于google的大力推廣,正是由于google產(chǎn)品對(duì)ajax技術(shù)的廣泛應(yīng)用,使得ajax流行起來(lái)了?! jax其核心有JavaScript、XMLHTTPRequest、DOM對(duì)象組成,通過(guò)XMLHttpReque
一. ajax的簡(jiǎn)介
ajax 的全稱是Asynchronous(異步的意思) JavaScript and XML,是一種創(chuàng)建交互式網(wǎng)頁(yè)應(yīng)用的網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)
ajax技術(shù)的流行得益于google的大力推廣,正是由于google產(chǎn)品對(duì)ajax技術(shù)的廣泛應(yīng)用,使得ajax流行起來(lái)了。
ajax其核心有JavaScript、XMLHTTPRequest、DOM對(duì)象組成,通過(guò)XMLHttpRequest對(duì)象來(lái)向服務(wù)器發(fā)異步請(qǐng)求,從服務(wù)器獲得數(shù)據(jù),然后用JavaScript來(lái)操作DOM而更新頁(yè)面。這其中最關(guān)鍵的一步就是從服務(wù)器獲得請(qǐng)求數(shù)據(jù)。
XMLHttpRequest是ajax的核心機(jī)制,它是在IE5中首先引入的,是一種支持異步請(qǐng)求的技術(shù)。簡(jiǎn)單的說(shuō),也就是js可以及時(shí)向服務(wù)器提出請(qǐng)求和處理響應(yīng),而不阻塞用戶。達(dá)到無(wú)刷新的效果。下面來(lái)看一下ajax的請(qǐng)求步驟。
二.a(chǎn)jax的請(qǐng)求步驟
1、創(chuàng)建異步對(duì)象
Var ajax=new XMLHttpRequest();
2、注冊(cè)回調(diào)函數(shù)
ajax.onreadystatechange=callback;
要注意的是callback不能寫成callback(),我們是想把方法名告訴onreadystatechange這個(gè)屬性,如果加了括號(hào),就相當(dāng)于把返回值告訴了onreadystatechange屬性。
3、使用open方法設(shè)置和服務(wù)器端交互的基本信息
1.)GET方式交互
ajax.open("GET","AJAX?name=" + userName,true);
2.)POST方式交互
ajax.open("POST","AJAX",true);
4、設(shè)置發(fā)送的數(shù)據(jù),開(kāi)始和服務(wù)器端交互
1.)GET方式
ajax.send(null);
2.)POST方式
ajax.send("name=" + userName);
5、更新界面
在回調(diào)函數(shù)中判斷交互是否結(jié)束,響應(yīng)是否正確,并根據(jù)需要獲取服務(wù)器返回的數(shù)據(jù),并更新頁(yè)面
array.push(ajax.readyState); //判斷和服務(wù)器端的交互是否完成,還要判斷服務(wù)器端是否正確返回了數(shù)據(jù)
if(ajax.readyState == 4 && ajax.status == 200){ //第一個(gè)判斷條件是表示和服務(wù)器端的交互已經(jīng)完成,第二個(gè)判斷條件是服務(wù)器的是響應(yīng)代碼是200,正確返回了數(shù)據(jù)
var message=ajax.responseText; //XML數(shù)據(jù)對(duì)應(yīng)的DOM對(duì)象的接受方法,使用的前提是,服務(wù)器端需要設(shè)置contenttype為text/xml
var div=document.getElementById("message");
div.innerHTML=message; //將獲取的xml數(shù)據(jù)添加到頁(yè)面上
console.log(array)
}
三.a(chǎn)jax的優(yōu)點(diǎn)
1、最大的一點(diǎn)是頁(yè)面無(wú)刷新,在頁(yè)面內(nèi)與服務(wù)器通信,給用戶的體驗(yàn)非常好。
2、使用異步方式與服務(wù)器通信,不需要打斷用戶的操作,具有更加迅速的響應(yīng)能力。
3、可以把以前一些服務(wù)器負(fù)擔(dān)的工作轉(zhuǎn)嫁到客戶端,利用客戶端閑置的能力來(lái)處理,減輕服務(wù)器和帶寬的負(fù)擔(dān),節(jié)約空間和寬帶租用成本。并且減輕服務(wù)器的負(fù)擔(dān),ajax的原則是“按需取數(shù)據(jù)”,可以最大程度的減少冗余請(qǐng)求,和響應(yīng)對(duì)服務(wù)器造成的負(fù)擔(dān)。
4、基于標(biāo)準(zhǔn)化的并被廣泛支持的技術(shù),不需要下載插件或者小程序。
四.a(chǎn)jax的缺點(diǎn)
1、ajax干掉了瀏覽器的back按鈕,對(duì)瀏覽器后退機(jī)制的破壞。
2、安全問(wèn)題,ajax技術(shù)就如同對(duì)企業(yè)數(shù)據(jù)建立了一個(gè)直接通道,暴露出請(qǐng)求的接口的數(shù)據(jù).
3、對(duì)搜索引擎支持的不友好.
4、破壞了程序的異常機(jī)制,如果程序拋出異常,對(duì)調(diào)試帶來(lái)不方