javascript實現Ajax的六個步驟

經過jQuery的封裝以後,對於Ajax的使用變得很是的簡單,可是我的對於javascript實現的Ajax的原理卻一無所知,今天在看《鋒利的jQuery》這本書的時候,在書上看到了關於這個實現的例子,特此摘抄下來。javascript

例子描述:單擊一個按鈕,而後經過傳統的javascript的Ajax的方式從服務器端取回一個「Hello Ajax!」的字符串並顯示在頁面上。php

首先在前臺頁面中書寫HTML代碼,代碼以下:html

<input type="button" value="Ajax提交" onclick="Ajax();" />
<div id="resText"></div>

<button>按鈕用來觸發Ajax,id爲"resText"的元素用來顯示從服務器返回的HTML文本。
java

接下來的任務就是完成Ajax()函數,實現步驟以下:瀏覽器

(1)定義一個函數,經過該函數來異步獲取信息,代碼以下:服務器

function Ajax(){
//...
}

(2)聲明一個空對象用來裝入XMLHttpRequest對象,代碼以下:
異步

var xmlHttpReq=null;

(3)給XMLHttpRequest對象賦值,代碼以下:async

if(window.ActiveXObject){                                    //IE五、IE6是以ActiveXObject的方式
                                                             //引入xmlHttpRequest對象的
    xmlHttpReq=new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){                             //除IE五、IE6之外的瀏覽器
                                                             //XMLHttpRequest是window的子對象
    xmlHttpReq=new XMLHttpRequest();                         //實例化一個XMLHttpRequest對象
}

IE五、IE6是以ActiveXObject的方式引入XMLHttpRequest對象的,而其餘瀏覽器的XMLHttpRequest對象是window的子對象。函數

(4)實例化成功後,使用open()方式初始化XMLHttpRequest對象,指定HTTP方法和要使用的服務器URL,代碼以下:code

xmlHttpReq.open("GET","test.php",true);    //調用open()方法並採用

默認狀況下,使用XMLHttpRequest對象發送的HTTP請求是異步進行的,可是能夠顯示地把async參數設置爲true,如上面代碼所示。

(5)由於要作一個異步調用,因此須要註冊一個XMLHttpRequest對象,將調用的回調事件處理器當它的readyState值改變時調用。當readState值被改變時,會激發一個readstatechange事件,可使用onreadstatechange屬性來註冊該回調事件處理器,代碼以下:

xmlHttpReq.onreadstatechange=RequestCallBack;    //設置回調函數

(6)使用send()方法發送該請求,由於這個請求使用的是HTTP的GET方式,因此能夠在不指定參數或使用null參數的狀況下調用send()放法,代碼以下:

xmlHttpReq.send(null);        //由於使用GET方法提交,因此可使用null做爲參數調用

當請求狀態改變時,XMLHttpRequest對象調用onreaystatechange屬性註冊的事件處理器。所以,在處理該響應以前,事件處理器應該首先檢查readyState的值和HTTP的狀態。當請求完成加載(readyState值爲4)而且響應已經成功(HTTP狀態爲200)時,就能夠調用一個javascript函數來處理該響應內容,代碼以下:

function RequestCallBack(){//一旦readyState值改變,將會調用該函數
    if(xmlHttpReq.readyState == 4)
    {
        if(xmlHttpReq.status == 200){
        //將xmlHttpReq.responseText的值賦予id爲resText的元素
            document.getElementById("resText").innerHTML=xmlHttpReq.responseText;
        }
    }
}

最後,若是單擊"Ajax提交"按鈕後發現網頁上出現了"Hello Ajax!",那麼就完成了第一個Ajax調用。

相關文章
相關標籤/搜索