1. 程式人生 > >XMLHttpRequest物件的幾種狀態和幾個重要屬性以及常用的方法

XMLHttpRequest物件的幾種狀態和幾個重要屬性以及常用的方法

XMLHttpRequest的幾種狀態:

0:  物件沒有完成初始化

1: 物件開始傳送請求

2: 物件的請求傳送完成

3: 物件開始讀取伺服器響應

4: 物件讀取伺服器響應結束

1.onreadystatechange                      指定XMLHttpRequest物件狀態改變時的事件處理函式

2.readyState                                         XMLHttpRequest的處理狀態

3.status                                                 伺服器返回的狀態碼 只有狀態為4的時候才有返回值

readyState改變時,onreadystatechange都會被觸發

function createRequest()

function  xxx()     js進入的方法,裡面會用到createRequest和disResult

function disResult() XMLHttpRequest的狀態處理函式

function createRequest()
{
    try{
        httpRequest=new XMLHttpRequest();
    }catch(trymicrosoft)
    {
        try{
           httpRequest=new ActiveXObject("Msxml2.XMLHTTP");
        }catch(othermicrosoft)
        {
            try{
                httpRequest=new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch(failed)
            {
                httpRequest=false;
            }
        }
    }

    if(!httpRequest)
    {
       alert("err Happend!");
       return null;
    }        
    return httpRequest;
}
function getBackInfo()
{
 createRequest();
    var username=document.getElementById("username").value;
    alert(username);
     httpRequest.onreadystatechange=disResult;//隱性的迴圈
    var url='checkUser.jsp?username='+username;
    httpRequest.open("POST",url,"true");
    //下面相當於是一個隱性的迴圈,在函式中規定只有都接收完畢資料後才做處理
    //onreadystatechange有5個值:
    // 0:未初始化
    // 1:初始化
    // 2:傳送資料
    // 3:接收資料中
    // 4:資料接收完畢
    //另外還要注意就是在註冊回撥函式onreadystatechange時,後面的函式不能夠帶引數
    //如下disResult是一個函式,不能夠帶參。
  
    httpRequest.send(null);
}
function disResult()

{
/**

1.一定要確定readystate==4的完成狀態才做下面的事,否則會在建立連線即

readystate==1的

時候就開始,然後會在readystate==2,readystate==3,readystate==4的時候都會執行,不信

你可以alert("")一個提示資訊試試。

2.伺服器通知完成了,並且還要保證是正確完成的,得到的是我們需要的結果才

能夠繼續,這裡

常用響應碼有:

200:成功執行

401:未授權

403:禁止

404:沒有找到檔案

*/

    if(httpRequest.readystate==4)
    {
        if(httpRequest.status==200)
        {
            //一切都OK了,那就該用Javascript去執行你想要的動作了。
            document.getElementById("disCheckResult").value=httpRequest.responseText;
            alert('done');
        }
        else
        {
            alert('Something Wrong has Happend!');
        }
    }