首頁 >web前端 >js教程 >深入理解ajax非同步請求的五個步驟(詳細代碼)

深入理解ajax非同步請求的五個步驟(詳細代碼)

yulia
yulia原創
2018-09-17 17:24:2431119瀏覽

在前端工作中,常常會用到ajax,其實很多人只知道ajax是異步請求,不知道應該如何用它,它的基本步驟有哪些,ajax請求過程是怎樣的?接下來這篇文章就跟大家介紹Ajax的請求步驟,以及ajax請求步驟的詳細程式碼。有興趣的朋友可以看看。

AJAX(Asynchronous JavaScript and XML):是指一種建立互動式網頁應用程式的網頁開發技術,透過在背景與伺服器進行少量資料交換,AJAX 可以使網頁實現非同步更新。這意味著可以在不重新載入整個網頁的情況下,對網頁的局部進行更新。

1.建立xmlHttpRequest對象

所有現代瀏覽器(IE7 、Firefox、Chrome、Safari 以及Opera)均支援XMLHttpRequest 對象,而IE5 和IE6 使用的是ActiveXObject。

    if(window.XMLHttpRequest){
       xmlHttp = new XMLHttpRequest(); 
      if(xmlHttp.overrideMimeType){
        xmlHttp.overrideMimeType("text/xml");
      }
   }else if(window.ActiveXobject){
       var activeName =["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
       for(var i=0; i<activeName.length; i++){
          try{
              xmlHttp = new ActiveXobject(activeName[i]);
             break;
          }catch(e){
          }
       }     
   }
   if(!xmlHttp){
      alert("创建xmlhttprequest对象失败");
   }else{    
   }

2.設定回呼函數

   xmlHttp.onreadystatechange= callback;
   function callback(){}

#3.使用OPEN方法與伺服器建立連線  xmlHttp.open("get","ajax ?name=" name,true)

此步驟注意設定http的請求方式(post/get),如果是POST方式,注意設定請求頭資訊xmlHttp.setRequestHeader("Content-Type","application /x-www-form-urlencoded")

4.傳送資料給伺服器端

  xmlHttp.send(null);

  如果是POST方式就不為空

#5.在回呼函數中針對不同的回應狀態進行處理

 if(xmlHttp.readyState == 4){
      //判断交互是否成功
      if(xmlHttp.status == 200){
        //获取服务器返回的数据
        //获取纯文本数据
        var responseText =xmlHttp.responseText;
       document.getElementById("info").innerHTML = responseText;
      }
  }

#readyState屬性:表示請求/回應過程的目前階段

0:未初始化。尚未呼叫 open()方法。
1:啟動。已經呼叫 open()方法,但尚未呼叫 send()方法。
2:發送。已經呼叫 send()方法,但尚未接收到回應。
3:接收。已經接收到部分響應資料。
4:完成。已經接收到全部回應數據,而且已經可以在客戶端使用了。

只有在XMLHttpRequest物件完成了上述5個步驟之後,才可以取得從伺服器端回傳的資料。

status屬性:回應的HTTP 狀態碼
200:回應成功
301:永久重定向/永久轉移
302:暫時重定向/暫時轉移
304:本次取得內容是讀取快取中的資料
400:請求參數錯誤
401:無權限存取
404:存取的資源不存在

總結:以上介紹了Ajax請求的五個步驟以及詳細代碼 ,沒有接觸過朋友可能看起來比較困難,沒關係,看了以後,多去動手敲敲,慢慢就懂了,希望可以幫助到你!

以上是深入理解ajax非同步請求的五個步驟(詳細代碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn