天天看點

Ajax快速入門!(代碼版)

1.Ajax 簡介

1.1Ajax 是什麼?

Ajax (Asynchronous JavaScript and XML) 是一種Web應用技術,可以借助用戶端腳本(javascript)與服務端應用進行異步通訊,擷取服務端資料以後,可以進行局部重新整理。進而提高資料的響應和渲染速度。

1.2Ajax 技術應用場景?

Ajax技術最大的優勢就是底層異步,然後局部重新整理,進而提高使用者體驗,這種技術現在在很多項目中都有很好的應用,例如:

商品系統。

評價系統。

地圖系統。

……

AJAX可以僅向伺服器發送并取回必須的資料,并在用戶端采用JavaScript處理來自伺服器的響應。這樣在伺服器和浏覽器之間交換的資料大量減少,伺服器響應的速度就更快了。但Ajax技術也有劣勢,最大劣勢是不能直接進行跨域通路。

1.3Ajax 技術時序模型分析?

傳統Web應用中的,同步請求應用時序模型分析,如圖-3所示:

Ajax快速入門!(代碼版)

在圖-3中,用戶端向服務端向服務端發送請求需要等待服務端的響應結果,服務端傳回資料以後,用戶端可以繼續發送請求。

基于Ajax技術的Web異步請求響應模型如圖-4所示:

Ajax快速入門!(代碼版)

在圖-4中,用戶端可以向服務端發送異步請求,用戶端無需等待服務端的響應結果,可以不斷向服務端發送請求。

2.Ajax 快速入門

2.1 Ajax 請求響應過程分析

所有的Ajax 請求都會基于DOM(HTML元素)事件,通過XHR(XMLHttpRequest)對象實作與服務端異步通訊局部更新,如圖-4所示:

Ajax快速入門!(代碼版)

2.2 Ajax 程式設計基本步驟分析

第一步:基于dom事件建立XHR對象(XMLHttpRequest對象)

第二步:注冊XHR對象狀态監聽,通過回調函數(callback)處理狀态資訊。

第三步:建立與服務端的連接配接

第四步:發送異步請求實作與服務端的通訊

第五步:通過回調(callback)函數,獲得響應結果并進行資料更新.(非阻塞)

2.3. Ajax Get 請求操作實作

基于ajax技術中的XMLHttpRequest對象,向服務端發起異步Get請求,關鍵代碼分析如下:

function doAjaxGet(url,params,callback){
     //1.建立XmlHttpRequest對象
      var xhr=new XMLHttpRequest();
     //2.設定狀态監聽,監聽XmlHttpRequest對象與服務端通訊的過程(例如連接配接是否建立,請求是否在處理,響應是否已産生)
      xhr.onreadystatechange=function(){//callback(回調函數)
       //基于xhr對象擷取的通訊狀态,對響應資料進行處理
          if(xhr.readyState==4&&xhr.status==200){//500表示服務端出錯了
                  //服務端響應的結果會傳遞給XHR對象,我們可以借助responseText擷取響應結果
                  callback(xhr.responseText);
          }
     }
    //3.建立與服務端的連接配接
     xhr.open("GET",url+"?"+params,true);//true表示異步
     //4.發送請求
     xhr.send(null); //Get請求,send方法不傳内容
   //5.對響應結果進行處理(在回調函數中處理)。
}
           

2.3.Ajax Post 請求操作實作

基于ajax中XMLHttpRequest對象,向服務端發起異步Post請求。對于post請求在發送請求執行需要設定請求頭,見紅色代碼部分。

function doAjaxPost(url,params,callback){
         //1.建立XmlHttpRequest對象
         var xhr=new XMLHttpRequest();
         //2.設定狀态監聽,監聽XmlHttpRequest對象與服務端通訊的過程.
         xhr.onreadystatechange=function(){//callback(回調函數)
                 //基于xhr對象擷取的通訊狀态,對響應資料進行處理
                 if(xhr.readyState==4&&xhr.status==200){//500表示服務端出錯了
                        //服務端響應的結果會傳遞給XHR對象,
                 //我們可以借助xhr.responseText擷取響應結果
                        callback(xhr.responseText);
                 }
         }
         //3.建立與服務端的連接配接
         xhr.open("POST",url,true);//true表示異步
         xhr.setRequestHeader("Content-Type",
      "application/x-www-form-urlencoded");
         //4.發送請求
         xhr.send(params); //post請求将參數寫到send方法
         //5.對響應結果進行處理(在回調函數中處理)。
}
           

給個關注不迷路哦!或者點選收藏也可以的哦!

繼續閱讀