1、ajax、axios總結

吃不胖的瘦子!發表於2018-08-14

一.原生js實現ajax請求:

 步驟:

  get請求:

//  1.建立一個XMLHttpRequest的物件. 
     var xml=null;  //初始值設為空
     if(XMLHttpRequest){
         xml=new XMLHttpRequest; //相容非IE6
     }else{
         xml=new ActiveXObject(`Microsoft.XMLHTTP`); //相容IE6瀏覽器
     }
     //2.通過open與伺服器建立連線    open(method,url,async) ; 
     //method包含 GET、POST、PUT方式。
     //第三個引數同步(false)或者非同步(true)
    xml.open(`GET`,url,true); 
    //3.傳送請求 send(string)  
    //string(引數) 僅用於post請求,GET請求不需要傳引數,如果有引數直接拼接到url中。
    xml.send();
    //4.狀態和響應
    xml.onreadystatechange=function(){
    	//當readyState==4並且status==200時請求成功,否則請求失敗
        if(xml.readyState==4&&xml.status==200){
            //請求成功
        }else{
            //請求失敗
        }
    }

  2.post請求:

 //步驟同 get
    var xml=null;
    var data={a:1,b:2};
    if(XMLHttpRequest){
        xml=new XMLHttpRequest;
    }else{
        xml=new ActiveXObject(`Microsoft.XMLHTTP`)
    }
    xml.open(`POST`,url,true);
    xml.send(data); //這裡的data是要傳遞的引數 
    xml.onreadystatechange=function(){
        if(xml.readyState==4&&xml.status==200){
            //請求成功
        }else{
            //請求失敗
        }
    }

  二.jq實現ajax請求:

       get請求:

       

//  1.get請求
     $.ajax({
         type:"get",
         url:"",
         async:true,
         timeout:3000,  //timeout:響應超時時間,非必須引數
         beforeSend:function(){
         	//這裡是傳送請求之前所要進行的操作
         },
         success:function(){
             //請求成功
         },
         error:function(){
            //請求失敗
         }
     });

  

 post請求

$.ajax({
          type:"post",
          url:"",
          data:{a:1,b:2},//需要傳遞的引數
          async:true,
          timeout:3000,  //timeout:響應超時時間,非必須引數
          beforeSend:function(){
         	//這裡是傳送請求之前所要進行的操作
          },
          success:function(){
              //請求成功
          },
          error:function(){
           //請求失敗    
          }
      	});

  

  三.axios請求:

        首先安裝axios,
       方法一:npm install axios
       方法二: CDN引入 <script src=”https://unpkg.com/axios/dist/axios.min.js”></script>  

     get請求:

   

//1.get請求(無引數)
    axios.get(`http://www.xxx`)
    .then(function(response){
        //請求成功
    }).catch(function(erroe){
        //請求失敗
    });

  

//2.get請求(有引數)
      axios.get(`http://www.xxx?a=1&b=2`)
        .then(function(response){
            //請求成功
        }).catch(function(erroe){
            //請求失敗
        });

  post請求:

    

//必須引入qs對data進行stringify  安裝axios時已經安裝了qs,無需再安裝,引入即可用。
    // import Qs  from `qs`   
     let data=Qs.stringify({a:1,b:2});
     axios.post(`http://www.xxx`,data)
     .then(function(response){
         //請求成功
     }).catch(function(error){
         //請求失敗
     })
     //4.多個請求同時傳送
     function axiosOne(){
      return axios.get(`http://www.url.one`)    
     };
     function axiosTwo(){
      return axios.get(`http://www.url.two`)    
     };
    axios.all([axiosOne(),axiosTwo()])
   .then(axios.spread(function(acct, perms){
        console.log(acct);//請求一的結果;
        console.log(perms);//請求二的結果
   }))

  

相關文章