Ajax-快速上手前后端交互


Ajax

在之前自己也有總結過關於Ajax的筆記,各種的懵圈,通過一次項目和幾次的總結和分享,我對Ajax終於算是有了一定的理解和自己的見解。相信大家見過和度過了很多的關於Ajax的什么前世今生、大刀闊斧等文章,我自己也受益匪淺。在這里我就談談自己的簡單理解和用法。

  • Ajax是什么?
    Ajax就是當瀏覽器(客戶端)向服務器發送請求時用的一種技術,它的核心是XMLHttpRequest對象,他最大的特點就是向服務器請求額外的數據而無須加載頁面(刷新),既異步加載

  • Ajax技術是怎樣實現請求的?
    目前Ajax技術有兩種方式實現請求:一、通過他的核心對象XHR(XMLHttpRequest的縮寫);二、通過window.fetch()方法進行請求。
    1.1通過XHR對象進行請求(原生js)代碼如下:

      //1、創建XHR對象
      var request = new XMLHttpRequest();//在大多數瀏覽器中,在ie5、ie6中不支持這個方式
      //在ie5、ie6中兼容只需定義下面這個函數
      var request;
      if(window.XMLHttpRequest){
          request = new XMLHttpRequest();
      }else{
          request = new ActiveXObject("Microsoft.XMLHTTP");
      }
      
    
      //2、進行請求完整代碼
      var xhr = '';
      var requestData = '';
      //兼容性處理
      if(window.XMLHttpRequest){
          xhr = new XMLHttpRequest();
      }else{
          xhr = new ActiveXObject("Microsoft.XMLHTTP");
      }
    
      xhr.open('GET/POST','url',true/false);//get和post請求,true為異步請求、false我為同步請求,請求的URL中可帶參數進行請求
      xhr.setRequestHeader("Content-type", "application/json");//添加http頭信息,該函數的順序必須是open之后,send之前
      xhr.send(JSON.stringify({
          name: '小明',
          age: 20
      }));//post的send(String)必須要,send用於發送請求參數,如果不需要請求體發送請求參數,則為null。
          //send傳輸的數據是以json數據格式傳給后台的。
      //返回響應
      xhr.onreadystatechange = function(){
          if(xhr.readyState == 4){
              if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){
                  //請求成功的處理函數,服務器返回的數據存入responseText屬性中
                  requestData = xhr.responseText;//獲取到后台響應的數據
                  var date = JSON.parse(requestData);//將響應數據轉化成json格式,以便使用
                  //使用數據
                  //~~~
              }else{
                  //請求數據錯誤的處理函數
              }
          }else{
              //ajax發送失敗,沒有得到響應數據
          }
      }
    

    1.2使用jQuery的$.ajax()方法實現請求,代碼如下:

       $.ajax({
          type: 'GET',//請求方式
          url: 'url',//請求資源地址或請求接口
          data: {
              //請求參數
          },
          success: function(data){//服務器響應的數據都存入data中
              //請求成功處理函數
              if(data.status === '0'){
                  alert(data.message);
              } else {
                  //向自己的html添加服務器響應的數據
              }
          }
          error: function(){
              //請求失敗處理函數
          }
      });
    

    2、目前市場上已經在使用window.fetch()方法,XMLHttpRequest 是一個設計粗糙的 API,不符合關注分離(Separation of Concerns)的原則,配置和調用方式非常混亂,而且基於事件的異步模型寫起來也沒有現代的 Promise,generator/yield,async/await 友好。Fetch 的出現就是為了解決XHR的問題
    他的請求代碼如下:

      window.fetch(url).then(function(response){//響應值放入response中
          return response.json();//用json()方法把相應的數據轉化為javascript對象
      }).then(function(data)
          //請求成功處理函數
      }).catch(function(e){
          //請求失敗處理函數
      })
    
  • Ajax擴展
    Ajax為了擴充他的功能,發展了XHR2,這里我就不再詳細說明,想要對Ajax的請求做詳細了解的可以查看我最初的Ajax學習筆記!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM