Javascript實(shí)現(xiàn)AJAX的核心對(duì)象是XMLHttpRequest,

實(shí)現(xiàn)步驟(只需四步):

第一步,獲取XMLHttpRequest對(duì)象,直接new一個(gè)XMLHttpRequest對(duì)象,var xmlHttp = new XMLHttpRequest()(適用于IE7+、firefox、Chrome、Safari和Opera),如果還有其他版本的瀏覽器,則會(huì)創(chuàng)建各自對(duì)應(yīng)的對(duì)象。

第二步,打開與服務(wù)器的連接

xmlHttp.open(method,url,async);

method:請(qǐng)求方式,可以是GET或POST

url:所要訪問(wèn)的服務(wù)器中資源的路徑如servlet/AServlet

async:是否為異步傳輸,true表示為異步傳輸,一般都是true

第三步,發(fā)送請(qǐng)求?

xmlHttp-.setRequestHeader("Content-Type","application/x-www-form-urlencoded");//設(shè)置請(qǐng)求頭,通知服務(wù)器發(fā)送的數(shù)據(jù)是請(qǐng)求參數(shù)

new XMLHttpRequest().send("xxxxx");//注意,如果不給參數(shù),可能會(huì)造成部分瀏覽器無(wú)法發(fā)送請(qǐng)求

參數(shù):如果是GET請(qǐng)求,可以是null,因?yàn)镚ET提交參數(shù)會(huì)拼接在url后面

如果是POST請(qǐng)求,傳入的就是請(qǐng)求參數(shù)

第四步,注冊(cè)監(jiān)聽

在XMLHttpRequest對(duì)象的一個(gè)事件上注冊(cè)監(jiān)聽器:

onreadystatechange

一共有五個(gè)狀態(tài):(xmlHttp.readyState)

0狀態(tài):表示剛創(chuàng)建XMLHttpRequest對(duì)象,還未調(diào)用open()方法

1狀態(tài):表示剛調(diào)用open()方法,但是還沒(méi)有調(diào)用send()方法發(fā)送請(qǐng)求

2狀態(tài):調(diào)用完了send()方法了,請(qǐng)求已經(jīng)開始

3狀態(tài):服務(wù)器已經(jīng)開始響應(yīng),但是不代表響應(yīng)結(jié)束

?? ??? ??? ??? ?4狀態(tài): 服務(wù)器響應(yīng)結(jié)束!(通常我們只關(guān)心這個(gè)狀態(tài))

//獲取xmlHttp對(duì)象的狀態(tài):

var state = xmlHttp.readyState;//可能得到0,1,2,3,4?

//獲取服務(wù)器響應(yīng)的狀態(tài)碼

var status = xmlHttp.status;

//獲取服務(wù)器響應(yīng)的內(nèi)容

var data = xmlHttp.responseText;//得到服務(wù)器響應(yīng)的文本格式的數(shù)據(jù)?

//相當(dāng)于每次狀態(tài)改變時(shí),都會(huì)調(diào)用這個(gè)function

xmlHttp.onreadystatechange = function(){

? ? //當(dāng)服務(wù)器已經(jīng)處理完請(qǐng)求之后

? ? if(xmlHttp.readyState == 4){

? ? ? ? //status是應(yīng)答狀態(tài)碼,200說(shuō)明服務(wù)器響應(yīng)完成,而且狀態(tài)OK

? ? ? ? if(xmlHttp.status == 200){

? ? ? ? ? ? //獲取響應(yīng)數(shù)據(jù)并執(zhí)行局部刷新的邏輯

? ? ? ? ? ? var result = xmlHttp.responseText;

? ? ? ? ? ? result = xmlHttp.responseXML;

? ? ? ? }

? ? }

}

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

  • 創(chuàng)建XMLHttpRequest 對(duì)象 所有現(xiàn)代瀏覽器(IE7+、Firefox、Chrome、Safari 以及...
    Miracle_6e4f閱讀 483評(píng)論 0 0
  • AJAX 原生js操作ajax 1.創(chuàng)建XMLHttpRequest對(duì)象 var xhr = new XMLHtt...
    碧玉含香閱讀 3,563評(píng)論 0 7
  • 要完整實(shí)現(xiàn)一個(gè)AJAX異步調(diào)用和局部刷新,通常需要以下幾個(gè)步驟: (1)創(chuàng)建XMLHttpRequest對(duì)象,也就...
    親愛的翔子閱讀 554評(píng)論 0 0
  • 一、Ajax是什么 Ajax:全稱是“Asynchronous Javascript And Xml”,翻譯成...
    前端攻城獅子王閱讀 622評(píng)論 0 4
  • 四川臘肉,水煮片刻后撈出。切后皮肉如凝脂,流油。 豆瓣醬,五香粉,糖。調(diào)醬料。 干辣椒,豆豉,姜末。炒配料。 成色...
    懷想君閱讀 417評(píng)論 1 3

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