ajax簡單理解

    AJAX即“Asynchronous Javascript And XML”(異步JavaScript和XML),是指一種創建交互式網頁應用的網頁開發技術。
    
    通過在後臺與服務器進行少量數據交換,AJAX 可以使網頁實現異步更新。這意味着可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。
    傳統的網頁(不使用 AJAX)如果需要更新內容,必須重載整個網頁頁面

    使用Javascript向服務器提出請求並處理響應而不阻塞用戶!核心對象XMLHTTPRequest。通過這個對象,您的 JavaScript 可在不重載頁面的情況與Web服務器交換數據。




什麼是readyState

  readyState是XMLHttpRequest對象的一個屬性,用來標識當前XMLHttpRequest對象處於什麼狀態。

  readyState總共有5個狀態值,分別爲0~4,每個值代表了不同的含義,如下表所示:
  0        未初始化狀態:此時,已經創建了一個XMLHttpRequest對象
  1      準備發送狀態:此時,已經調用了XMLHttpRequest對象的open方法,並且XMLHttpRequest對象已經準備好將一個請求發送到服務器端
  2      已經發送狀態:此時,已經通過send方法把一個請求發送到服務器端,但是還沒有收到一個響應
  3      正在接收狀態:此時,已經接收到HTTP響應頭部信息,但是消息體部分還沒有完全接收到
  4      完成響應狀態:此時,已經完成了HTTP響應的接收



什麼是status

  status是XMLHttpRequest對象的一個屬性,表示響應的HTTP狀態碼。

  在HTTP1.1協議下,HTTP狀態碼總共可分爲5大類,如下表所示:
  1XX        服務器收到請求,需要繼續處理。例如101狀態碼,表示服務器將通知客戶端使用更高版本的HTTP協議。
  2XX        請求成功。例如200狀態碼,表示請求所希望的響應頭或數據體將隨此響應返回。
  3XX        重定向。例如302狀態碼,表示臨時重定向,請求將包含一個新的URL地址,客戶端將對新的地址進行GET請求。
  4XX        客戶端錯誤。例如404狀態碼,表示客戶端請求的資源不存在。
  5XX        服務器錯誤。例如500狀態碼,表示服務器遇到了一個未曾預料的情況,導致了它無法完成響應,一般來說,這個問題會在程序代碼出錯時出現。





//xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");



實例:

   //創建對象
        if(window.XMLHttpRequest){  //創建非IE的http對象
            httpObj = new XMLHttpRequest();
        }else{  //創建ie低版本的http對象
            httpObj = new ActiveXObject('Microsoft.XMLHTTP');
        }

        //連接服務器,併發送數據
        httpObj.open('get','http://localhost/p30/my_project/index.php?userName='+encodeURIComponent(userName)+'&pwd='+encodeURIComponent(pwd),true);
        

    ***如果該請求方式爲post請求,則需要對請求頭進行設置
    httpObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

    //發送數據get方式發送數據如下    
    httpObj.send(null);

    ***如果請求方式爲post方式 則該null修改爲要發送的數據格式爲
     name=value&name1=value2, 即 httpObj.send('name=value&name1=value2');


        //返回響應
        httpObj.onreadystatechange = function(){
            alert(httpObj.readyState);
             if(httpObj.readyState == 4){
                if(httpObj.status == 200){
                    var result = httpObj.responseText;
                    document.write(result);
                   /* for(var a in result){
                        alert(result.a);
                    }*/
                }
            }else{
                alert('請求錯誤');
             }
        };




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章