Ajax請求過程

Ajax的使用
(1)創建 XMLHttpRequest 對象,也就是創建一個異步調用對象;
(2)創建一個新的 HTTP 請求,並指定該 HTTP 請求的方法、 URL 以及驗證信息;
(3)設置響應 HTTP 請求狀態變化的函數;
(4)發送 HTTP 請求;
(5)獲取異步調用返回的數據;
(6)使用 JavaScript 和 DOM 實現局部刷新。
例如:

var xmlHttp = new XMLHttpRequest();
xmlHttp.open('GET', 'demo.php', true);
xmlHttp.send();
xmlHttp.onreadystatechange = function(){
    if(xmlHttp.readyState===4 && xmlHttp.status===200){
    }
}

——創建 Ajax 核心對象XMLHttpRequest

var xmlhttp;
if(window.XMLHttpRequest){
    // IE7+,Chrome,Firefox,Safari,Opera執行此代碼
    xmlhttp = new XMLHttpRequest();
}else{
    // IE5、IE6執行該代碼
    xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
}

——向服務器發送請求

xmlhttp.open(method, url, async);
xmlhttp.send();

        參數說明:method:請求類型,GET 或 POST;
                           url:文件在服務器上的位置,相對位置或絕對位置;
                           async:true(異步)或false(同步);
         post請求不同於get請求,send(string)方法在 POST 請求時才使用字符串參數,否則不用帶參數
         post請求一定要設置請求頭的格式內容

xmlhttp.open('POST', 'ajax_test.html', true);
xmlhttp.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
xmlhttp.send('fname=Herry&lname=Ford');

——服務器響應處理
          responseText:獲取字符串形式的響應數據
   ①同步處理

xmlhttp.open('GET', 'http://www.runoob.com/try/ajax/demo_get.php', false);
xmlhttp.send();
document.getElementById('mydiv').innerHTML = xmlhttp.responseText;

          ②異步處理

xmlhttp.onreadystatechange = function(){
    if(xmlhttp.readyState===4 && xmlhttp.status===200){
        document.getElementById('mydiv').innerHTML = xmlhttp.responseText;
    }
}

      xmlhttp.readyState一共有5種請求狀態,從0到4發送變化:
                     0:請求未初始化;
                     1:服務器連接已建立;
                     2:請求已接收;
                     3:請求處理中;
                     4:請求已完成,且響應已就緒
      xmlhttp.status響應狀態碼,比較常用的有:
                     200:請求成功;
                     304:該資源在上次請求之後沒有任何修改(這通常是瀏覽器的緩存機制,使用GET請求時尤其需要注意);
                     403:(禁止)服務器拒絕請求;
                     404:(未找到)服務器找不到請求的網頁;
                     408:(請求超時)服務器等候請求時發生超時;
                     500:(服務器內部錯誤)服務器遇到錯誤,無法完成請求。   

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