Ajax本地運(yùn)行環(huán)境搭建以及運(yùn)行流程

1,首先我們先了解下什么是Ajax以及為什么要使用ajax?

??????? Ajax(Asynchronous JavaScript and XML),即為異步的JavaScript和xml,是指一種創(chuàng)建交互式網(wǎng)頁(yè)應(yīng)用的網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)。首先,我們要知道,Ajax 不是一種新的編程語(yǔ)言,而是一種用于創(chuàng)建更好更快以及交互性更強(qiáng)的Web應(yīng)用程序的技術(shù)。使用 JavaScript 向服務(wù)器提出請(qǐng)求并處理響應(yīng)而不阻塞用戶!核心對(duì)象XMLHTTPRequest。通過(guò)這個(gè)對(duì)象,您的 JavaScript 可在不重載頁(yè)面的情況與 Web 服務(wù)器交換數(shù)據(jù),即在不需要刷新頁(yè)面的情況下,就可以產(chǎn)生局部刷新的效果。其次,了解到它是異步,這樣就可使網(wǎng)頁(yè)從服務(wù)器請(qǐng)求少量的信息,而不是整個(gè)頁(yè)面。

?????? 而什么是異步?跟同步有什么區(qū)別呢?當(dāng)你理解這個(gè)之后,你就明白為什么要使用ajax了。在Ajax之前,當(dāng)我們需要先服務(wù)器請(qǐng)求數(shù)據(jù)時(shí),我們向服務(wù)器發(fā)送一個(gè)請(qǐng)求,發(fā)送之后我們只能等待服務(wù)器的響應(yīng),給我們返回?cái)?shù)據(jù)回來(lái),而在這個(gè)期間我們什么都干不了,只能等待,這就是同步。而ajax的出現(xiàn)則幫我們解決了這個(gè)問(wèn)題,我們先看下ajax的工作原理,如圖1所示

圖1 ajax的工作原理

有了ajax之后,我們只需要把請(qǐng)求服務(wù)器這一塊,交給ajax去做就行了,ajax就相當(dāng)于“中間商”或者“中介”什么的,替我們?nèi)ァ芭芡取?,這樣,我們就不需要刷新整個(gè)頁(yè)面去等待服務(wù)器的響應(yīng)了,只需要利用JavaScript向服務(wù)器發(fā)送請(qǐng)求即可,就可以再不刷新頁(yè)面的情況下,實(shí)現(xiàn)局部頁(yè)面數(shù)據(jù)更新的效果。

2,Ajax本地運(yùn)行的環(huán)境搭建。

?????? 在ajax運(yùn)行之前,我們要先搭建好環(huán)境。使用wampServer或者xampp都可以,瀏覽器搜索下載即可。以wampserver為例來(lái)說(shuō)明,下載完之后運(yùn)行即可。在安裝的目錄中,有一個(gè)叫www的文件夾,我們把要運(yùn)行的的文件放在它里面即可。首先,檢查wampserver是否運(yùn)行了,在瀏覽器輸入localhost回車,看到圖2說(shuō)明已經(jīng)啟動(dòng)了。之后我們輸入要執(zhí)行的文件。假如我要執(zhí)行的是www目錄下的index.html文件,在瀏覽器輸入localhost/index.html回車即可運(yùn)行。

圖2 wampServer成功執(zhí)行界面

3,Ajax的運(yùn)行流程是怎樣的?

使用ajax只需要以下幾個(gè)步驟即可:

1,創(chuàng)建XMLHTTPRequest對(duì)象

var xhr = new XMLHttpRequest();在ie6及以下,我們要這樣設(shè)置xhr = new ActiveXObject('Microsoft.XMLHTTP');將其合并為:

var xhr = null;

try {

xhr = new XMLHttpRequest();

} catch (e) {

xhr = new ActiveXObject('Microsoft.XMLHTTP');

}

2,創(chuàng)建http請(qǐng)求

利用open方法,有三個(gè)參數(shù):第一個(gè),設(shè)置請(qǐng)求方式get/post;第二個(gè),設(shè)置請(qǐng)求地址,url;第三個(gè),是否為異步,默認(rèn)為true,即為異步,可不填。如:

xhr.open(method,url,true);

3,發(fā)送請(qǐng)求

xhr.send();

4,服務(wù)器響應(yīng)

xhr.onreadystatechange = function(){

if (xhr.readyState==4 && xhr.status==200 ) {

console.log(xhr.responseText);//請(qǐng)求成功后我們可以在這處理數(shù)據(jù)

} else {

alert('出錯(cuò)了,Err:' + xhr.status);

}

}

readyState: ajax的工作狀態(tài),存有 XMLHttpRequest 的狀態(tài)。從 0 到 4 發(fā)生變化。

0: 請(qǐng)求未初始化

1: 服務(wù)器連接已建立

2: 請(qǐng)求已接收

3: 請(qǐng)求處理中

4: 請(qǐng)求已完成,且響應(yīng)已就緒

responseText: ajax的請(qǐng)求返回的數(shù)據(jù)(字符串形式)

state: 服務(wù)器狀態(tài),服務(wù)器常用的狀態(tài)碼及其對(duì)應(yīng)的含義如下:

200:服務(wù)器響應(yīng)正常。

304:該資源在上次請(qǐng)求之后沒(méi)有任何修改(這通常用于瀏覽器的緩存機(jī)制,使用GET請(qǐng)求時(shí)尤其需要注意)。

400:無(wú)法找到請(qǐng)求的資源。

401:訪問(wèn)資源的權(quán)限不夠。

403:沒(méi)有權(quán)限訪問(wèn)資源。

404:需要訪問(wèn)的資源不存在。

405:需要訪問(wèn)的資源被禁止。

407:訪問(wèn)的資源需要代理身份驗(yàn)證。

414:請(qǐng)求的URL太長(zhǎng)。

500:服務(wù)器內(nèi)部錯(cuò)誤。

?著作權(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容