2021-04-30Ajax第三天

一、使用xhr發(fā)起GET請(qǐng)求

①創(chuàng)建 xhr 實(shí)例對(duì)象

var 對(duì)象名 = new XMLHttpRequest( )

②調(diào)用 xhr.open() 函數(shù)

對(duì)象名.open( "GET" ,"請(qǐng)求的URL地址" )

③調(diào)用 xhr.send( ) 函數(shù)

對(duì)象名.send( )

④監(jiān)聽 xhr.onreadystatechange 事件

對(duì)象名.onreadystatechange = function () {
   //監(jiān)聽xhr對(duì)象的請(qǐng)求狀態(tài):readyState; 服務(wù)器的響應(yīng)狀態(tài)status
    if (xhr.readyState === 4 && xhr.status === 200) {
      // 獲取服務(wù)器響應(yīng)的數(shù)據(jù)
      console.log(xhr.responseText)
    }
 }

            // 1.創(chuàng)建xhr對(duì)象
            var xhr = new XMLHttpRequest();
            // 2.調(diào)用open函數(shù)
            xhr.open('GET',"http://www.liulongbin.top:3006/api/getbooks?id=1")
            // 3.調(diào)用send函數(shù)
            xhr.send();
            // 4.監(jiān)聽函數(shù)
            xhr.onreadystatechange = function(){
                if(xhr.readyState==4 && xhr.status==200){
                    console.log(xhr.responseText);
                }
            }

二、帶有參數(shù)的GET請(qǐng)求

1.用xhr對(duì)象發(fā)起GEt請(qǐng)求時(shí),參數(shù)的位置寫到open( )方法里的URL地址后面。

對(duì)象名.open( "GET" ," http://www.liulongbin.top:3006/api/getbooks?id=1&bookname=西游記 " )

2.查詢字符串

定義:在URL地址后面拼接的參數(shù)字符串,叫做查詢字符串
格式:將英文的? 放在URL 的末尾,然后再加上 參數(shù)=值 ,想加上多個(gè)參數(shù)的話,使用& 符號(hào)進(jìn)行分隔。以這個(gè)形式,可以將想要發(fā)送給服務(wù)器的數(shù)據(jù)添加到 URL 中。

對(duì)象名.open( "GET" ," http://www.liulongbin.top:3006/api/getbooks?id=1&bookname=西游記 " )

3.GET請(qǐng)求攜帶參數(shù)的本質(zhì)

無論使用 $.ajax(),還是使用 $.get(),又或者直接使用 xhr 對(duì)象發(fā)起 GET 請(qǐng)求,當(dāng)需要攜帶參數(shù)的時(shí)候,本質(zhì)上,都是直接將參數(shù)以查詢字符串的形式,追加到 URL 地址的后面,發(fā)送到服務(wù)器的。

4.URL編碼

定義:URL地址中,只允許出現(xiàn)英文相關(guān)的字母、標(biāo)點(diǎn)符號(hào)、數(shù)字
編碼原則:使用安全的字符(沒有特殊用途或特殊意義的可打印字符)表示不安全的字符。
URL編碼原則的通俗理解:使用英文字符去表示非英文字符

5.URL的編碼與解碼

編碼:var str = encodeURI( 字符串 )
解碼:var str = decodeURI( 字符串 )
返回值就是編碼或者解碼后的字符串,可以用str變量接收。

6.XMLHttpResponse對(duì)象的readyState屬性(面試題)
捕獲.PNG

三、使用xhr對(duì)象發(fā)起post請(qǐng)求

①創(chuàng)建 xhr實(shí)例 對(duì)象

var 對(duì)象名 = new XMLHttpRequest( )

②調(diào)用 xhr.open() 函數(shù)

對(duì)象名.open( "POST" ,"請(qǐng)求的URL地址" )

③設(shè)置 Content-Type 屬性(固定寫法)

xhr.setRequestHeader('Content-Type' , 'application/x-www-form-urlencoded')

注意:如果傳輸文件類型的數(shù)據(jù),需要修改Content-Type的值。

④調(diào)用 xhr.send() 函數(shù),要發(fā)送的數(shù)據(jù)以查詢字符串的形式作為參數(shù)傳入。

對(duì)象名.send( " id=1&bookname=紅樓夢(mèng)&author=曹雪芹" )

⑤監(jiān)聽 xhr.onreadystatechange 事件

對(duì)象名.onreadystatechange = function () {
   //監(jiān)聽xhr對(duì)象的請(qǐng)求狀態(tài):readyState; 服務(wù)器的響應(yīng)狀態(tài)status
    if (xhr.readyState === 4 && xhr.status === 200) {
      // 獲取服務(wù)器響應(yīng)的數(shù)據(jù)
      console.log(xhr.responseText)
    }
 }

            // 1.創(chuàng)建xhr對(duì)象
            var xhr = new XMLHttpRequest();
            // 2.調(diào)用xhr.open()函數(shù)
            xhr.open('Post', 'http://www.liulongbin.top:3006/api/addbook')
            // 3.設(shè)置Content-Type屬性
            xhr.setRequestHeader('Content-Type',  'application/x-www-form-urlencoded')
            // 4.調(diào)用xhr.send()函數(shù)
            xhr.send('bookname=水滸傳&author=施耐庵&publisher=上海圖書出版社')
            // 5.監(jiān)聽函數(shù)
            xhr.onreadystatechange = function(){
                if (xhr.readyState === 4 && xhr.status === 200){
                    console.log(xhr.responseText);
                }
            }

四、數(shù)據(jù)交換格式

1.數(shù)據(jù)交換格式

數(shù)據(jù)交換格式就是服務(wù)器端與客戶端之間進(jìn)行數(shù)據(jù)傳輸與交換的格式。

前端領(lǐng)域,常用的兩種數(shù)據(jù)交換格式分別是 XML 和 JSON(重點(diǎn))。

2.XML

(1)XML與HTML類似,都是標(biāo)記語言,但是兩者沒有任何關(guān)系。

(2)XML與HTML對(duì)比:

  • HTML 被設(shè)計(jì)用來描述網(wǎng)頁上的內(nèi)容,是網(wǎng)頁內(nèi)容的載體
  • XML 被設(shè)計(jì)用來傳輸和存儲(chǔ)數(shù)據(jù),是數(shù)據(jù)的載體

(3)XML的缺點(diǎn):

  • XML 格式臃腫,和數(shù)據(jù)無關(guān)的代碼多,體積大,傳輸效率低
  • 在 Javascript 中解析 XML 比較麻煩

3.JSON

3.1  什么是JSON

JSON 就是 Javascript 對(duì)象數(shù)組的字符串表示法。JSON 的本質(zhì)是字符串。

3.2  JSON的兩種數(shù)據(jù)結(jié)構(gòu)

JSON 就是用字符串來表示 Javascript 的對(duì)象數(shù)組

3.3  對(duì)象結(jié)構(gòu)

{ "key1" :value1 , "key2" : value2, … }

①數(shù)據(jù)結(jié)構(gòu)為{ "key1" :value1 , "key2" : value2, … }的鍵值對(duì)結(jié)構(gòu)
②key 必須是使用英文的雙引號(hào)包裹的字符串,
③value 的數(shù)據(jù)類型可以是數(shù)字、字符串、布爾值、null、數(shù)組、對(duì)象6種類型。

捕獲.PNG

3.4  數(shù)組結(jié)構(gòu)

[ "java", "javascript", 30, true … ]

數(shù)組中數(shù)據(jù)的類型可以是數(shù)字、字符串、布爾值、null、數(shù)組、對(duì)象6種類型。

捕獲.PNG

3.5  JSON語法注意事項(xiàng)

① 對(duì)象中屬性名必須使用雙引號(hào)包裹
字符串類型的值必須使用雙引號(hào)包裹
③ JSON 中不允許使用單引號(hào)表示字符串
④ JSON 中不能寫注釋
⑤ JSON 的最外層必須是對(duì)象或數(shù)組格式
⑥ 不能使用 undefined 或函數(shù)作為 JSON 的值

3.6  JSON字符串與js對(duì)象(數(shù)組)的轉(zhuǎn)換

(1)把js對(duì)象(數(shù)組)換成JSON字符串

JSON.stringify("數(shù)據(jù)")

(2)把JSON字符串轉(zhuǎn)換成js對(duì)象(數(shù)組)

JSON.parse("字符串")

      // 1.將JSON字符串轉(zhuǎn)換成js對(duì)象(數(shù)組)
      var jsonStr = '{"name": "吳磊","age":22,"hobby":["打籃球","刺激戰(zhàn)場(chǎng)"]}';
      console.log(jsonStr);
      var result = JSON.parse(jsonStr);
      console.log(result);

      // 2.將js對(duì)象(數(shù)組)轉(zhuǎn)換成JSON字符串
      var arr = ['你好', 22, null, { name: '吳磊' }];
      console.log(arr);
      var result2 = JSON.stringify(arr);
      console.log(result2);
3.7 序列號(hào)與反序列化

①把數(shù)據(jù)對(duì)象 轉(zhuǎn)換為 字符串的過程,叫做序列化,例如:調(diào)用 JSON.stringify() 函數(shù)的操作,叫做 JSON 序列化。

②把字符串 轉(zhuǎn)換為 數(shù)據(jù)對(duì)象的過程,叫做反序列化,例如:調(diào)用 JSON.parse() 函數(shù)的操作,叫做 JSON 反序列化。

五、封裝自定義Ajax函數(shù)--myAjax( )

1.封裝一個(gè)函數(shù),將調(diào)用myAjax( )時(shí)提交的參數(shù)轉(zhuǎn)換成查詢字符串
2.在myAjax( )函數(shù)中:
①創(chuàng)建XMLHttpRequest對(duì)象
②判斷查詢類型是GET還是POST,執(zhí)行不同操作
③創(chuàng)建監(jiān)聽事件onreadystatechange

        // 1.準(zhǔn)備工作:封裝函數(shù),將對(duì)象形式的data數(shù)據(jù)轉(zhuǎn)換成查詢字符串
        function resolveData(data) {
          var arr = [];
          for (let k in data) {
            arr.push(k + '=' + data[k]);
          }
          return arr.join('&');
        }
        // var obj = { name: '吳磊', age: 22 };
        // console.log(resolveData(obj));

        // 2.封裝自己的Ajax函數(shù)
        // ①創(chuàng)建 xhr 對(duì)象
        // ②將參數(shù)轉(zhuǎn)換成查詢字符串
        // ③判斷查詢類型,進(jìn)行不同操作
        // ④監(jiān)聽 onreadystatechange 事件
        function myAjax(options) {

          var xhr = new XMLHttpRequest();

          var addressStr = resolveData(options.data);
          if (options.method.toUpperCase() === 'GET') {
            xhr.open(options.method, options.url + '?' + addressStr);
            xhr.send();
          } else if (options.method.toUpperCase() === 'POST') {
            xhr.open(options.method, options.url);
            xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            xhr.send(addressStr);
          }

          xhr.onreadystatechange = function () {
            if (xhr.readyState === 4 && xhr.status === 200) {
              var result = JSON.parse(xhr.responseText); //將返回的數(shù)據(jù)轉(zhuǎn)換為js對(duì)象
              options.success(result); //調(diào)用用戶的success方法,將返回的數(shù)據(jù)當(dāng)做實(shí)參傳入
            }
          };
        }

        // 3.測(cè)試自定義Ajax函數(shù)
        myAjax({
            method: "get",
            url: "http://www.liulongbin.top:3006/api/getbooks",
            data: {id:1},
            success: function(res){
                console.log(res);
            }
        });

六、XMLHttpRequest Level2的新特性

1. 舊版XMLHttpRequest的缺點(diǎn)
  • 只支持文本數(shù)據(jù)的傳輸,無法用來讀取和上傳文件
  • 傳送和接收數(shù)據(jù)時(shí),沒有進(jìn)度信息,只能提示有沒有完成
2.XMLHttpRequest Level2的新功能

①可以設(shè)置 HTTP 請(qǐng)求的時(shí)限
②可以使用 FormData 對(duì)象管理表單數(shù)據(jù)
③可以上傳文件
④可以獲得數(shù)據(jù)傳輸?shù)倪M(jìn)度信息

3.設(shè)置HTTP請(qǐng)求時(shí)限

新版本的 XMLHttpRequest 對(duì)象,增加了 timeout 屬性,可以設(shè)置 HTTP 請(qǐng)求的時(shí)限:

xhr對(duì)象.timeout = 3000 (單位是毫秒)

上面的語句,將最長等待時(shí)間設(shè)為 3000 毫秒。過了這個(gè)時(shí)限,就自動(dòng)停止HTTP請(qǐng)求。
與之配套的還有一個(gè)timeout 事件,用來指定回調(diào)函數(shù):

xhr對(duì)象.ontimeout = function() { }

      var xhr = new XMLHttpRequest();
      xhr.open('GET', 'http://www.liulongbin.top:3006/api/getbooks');

      // 設(shè)置請(qǐng)求時(shí)限
      xhr.timeout = 30;
      // 請(qǐng)求超時(shí)后的回調(diào)函數(shù)
      xhr.ontimeout = function () {
        alert('請(qǐng)求超時(shí)!');
      };
      
      xhr.send();
      xhr.onreadystatechange = function () {
        if (xhr.readyState == 4 && xhr.status == 200) {
          console.log(xhr.responseText);
        }
      };
4.FormData對(duì)象
  • Ajax在提交表單數(shù)據(jù)時(shí),需要通過JQuery提供的serialize( )方法快速獲取表單信息。
  • 為了方便表單處理,HTML5 新增了一個(gè) FormData 對(duì)象,可以模擬表單操作。

(1)手動(dòng)給FormData對(duì)象添加數(shù)據(jù)
①創(chuàng)建FormData實(shí)例
②使用append("屬性名" ,"屬性值" )方法為FormData實(shí)例添加數(shù)據(jù)
③在xhr對(duì)象調(diào)用send()方法時(shí),直接將FormData實(shí)例傳入。

     // 1.創(chuàng)建FormData實(shí)例對(duì)象
      var fd = new FormData();
      // 2.為實(shí)例對(duì)象添加數(shù)據(jù)
      fd.append('username', '吳磊');
      fd.append('password', '980903');

      var xhr = new XMLHttpRequest();
      xhr.open('POST', 'http://www.liulongbin.top:3006/api/formdata');
      xhr.send(fd);
      xhr.onreadystatechange = function () {
        if (xhr.readyState == 4 && xhr.status == 200) {
          console.log(JSON.parse(xhr.responseText));
        }
      };

    /* Object
      data: {username: "吳磊", password: "980903"}
      message: "測(cè)試FormData表單提交成功!"
      __proto__: Object */

(2)用FormData對(duì)象獲取form表單的數(shù)據(jù) (重點(diǎn)?。?!

var fd = new FormData (form表單對(duì)象 );

①在創(chuàng)建FormData實(shí)例時(shí),直接將form表單的原生DOM對(duì)象傳入,表單數(shù)據(jù)會(huì)自動(dòng)填充到 FormData 對(duì)象中。(注意?。。。?br> ②fd接收到的就是查詢字符串。
③替代了JQuery提供的serialize( )方法。
④FormData對(duì)象獲取的表單值必須有name屬性
⑤FormData對(duì)象只支持POST請(qǐng)求,不支持GET請(qǐng)求。
⑥使用FormData對(duì)象發(fā)送POST請(qǐng)求時(shí),沒有第三步?。?!千萬不能寫?。。?/strong>。

     $('#f').on('submit', function (e) {
          e.preventDefault();

          // 創(chuàng)建FormData實(shí)例,自動(dòng)獲取form表單的數(shù)據(jù)
          var fd = new FormData(this);

          // 發(fā)起POST請(qǐng)求,提交數(shù)據(jù)
          var xhr = new XMLHttpRequest();
          xhr.open('POST', 'http://www.liulongbin.top:3006/api/formdata');
          xhr.send(fd);
          xhr.onreadystatechange = function () {
            if (xhr.readyState == 4 && xhr.status == 200) {
              console.log(JSON.parse(xhr.responseText));
            }
          };
        });

    <form action="" id="f">
        用戶名:<input type="text" name="username">
        密碼:<input type="password" name="password">
        <button type="submit">提交</button>
    </form>
5.利用FormData對(duì)象上傳文件 (重點(diǎn)?。。。?/h6>

① 定義 UI 結(jié)構(gòu)

一個(gè)文件選擇框、一個(gè)上傳按鈕、一張圖片

② 驗(yàn)證是否選擇了文件

文件選擇框有一個(gè)files屬性,是一個(gè)數(shù)組,存儲(chǔ)了我們選擇待上傳的文件。

③ 向 FormData 中追加文件

FormData對(duì)象.append( "屬性名" ,"文件選擇框數(shù)組[ 0 ]"

④ 使用 xhr 發(fā)起上傳文件的POST請(qǐng)求

使用FormData對(duì)象發(fā)送POST請(qǐng)求時(shí),沒有第三步。。

   <!-- 1.定義UI結(jié)構(gòu) -->
    <input type="file" />                           <!-- 文件選擇框 -->
    <button>上傳</button>                           <!-- 上傳按鈕 -->
    <img src="" alt="" id="img" width="500px" />    <!-- 顯示上傳成功的圖片 -->

    <script>
      // 2.驗(yàn)證是否選擇了文件
      $('button').on('click', function () {
        var filesArr = document.querySelector('input').files; //文件選擇框的files屬性是一個(gè)數(shù)組
        if (filesArr.length <= 0) {
          return alert('請(qǐng)選擇上傳文件');
        }

        // 3.向FormData對(duì)象追加文件
        var fd = new FormData();
        fd.append('userFile', filesArr[0]);

        // 4.發(fā)起上傳文件的POST請(qǐng)求
        var xhr = new XMLHttpRequest();
        xhr.open('POST', 'http://www.liulongbin.top:3006/api/upload/avatar');
        xhr.send(fd);
        xhr.onreadystatechange = function () {
          if (xhr.readyState === 4 && xhr.status === 200) {
            var data = JSON.parse(xhr.responseText);
            // 根據(jù)返回的數(shù)據(jù)判斷文件是否上傳成功
            if (data.status === 200) {
              $('img').prop('src', 'http://www.liulongbin.top:3006' + data.url);
            } else {
              console.log('圖片上傳失敗');
            }
          }
        };
      });
    </script>
6.顯示文件上傳進(jìn)度

(1)新版本的 XMLHttpRequest 對(duì)象中,可以通過監(jiān)聽 xhr.upload.onprogress 事件,來獲取到文件的上傳進(jìn)度。

(2)事件對(duì)象e有三個(gè)重要屬性:
e.lengthComputable 是一個(gè)布爾值,表示當(dāng)前上傳的資源是否具有可計(jì)算的長度
e.loaded 已傳輸?shù)淖止?jié)
e.total 需傳輸?shù)目傋止?jié)

(3)在創(chuàng)建xhr對(duì)象之后,發(fā)送POST請(qǐng)求之前,監(jiān)聽上傳進(jìn)度。

        // 5.監(jiān)聽上傳進(jìn)度
        xhr.upload.onprogress = function (e) {
          // e.lengthComputable 是一個(gè)布爾值,表示當(dāng)前上傳的資源是否具有可計(jì)算的長度
          if (e.lengthComputable) {
            // e.loaded 已傳輸?shù)淖止?jié)
            // e.total 需傳輸?shù)目傋止?jié)
            var percentComplete = Math.ceil((e.loaded / e.total) * 100);
            console.log(percentComplete);
          }
        };
7.使用BootStrap渲染進(jìn)度條

①復(fù)制一個(gè)BootStrap的進(jìn)度條HTML結(jié)構(gòu)
②在監(jiān)聽文件上傳的事件中,將上傳進(jìn)度賦值給進(jìn)度條。
③POST請(qǐng)求完成后,使用xhr.upload.onload事件可以添加文件上傳成功后的回調(diào)函數(shù)。

    <!-- 1.定義UI結(jié)構(gòu) -->
    <!-- 文件選擇框 -->
    <input type="file" />
    <!-- 上傳按鈕 -->
    <button>上傳</button>
    <!-- BootStrap進(jìn)度條 -->
    <div class="progress" style="width: 600px; margin: 10px 50px" >
      <div class="progress-bar progress-bar-striped active" style="width: 0" id="percent">
        0%
      </div>
    </div>

    <script>
      // 2.驗(yàn)證是否選擇了文件
      $('button').on('click', function () {
        var filesArr = document.querySelector('input').files; //文件選擇框的files屬性是一個(gè)數(shù)組
        if (filesArr.length <= 0) {
          return alert('請(qǐng)選擇上傳文件');
        }

        // 3.向FormData對(duì)象追加文件
        var fd = new FormData();
        fd.append('userFile', filesArr[0]);

        var xhr = new XMLHttpRequest();
        // 5.監(jiān)聽上傳進(jìn)度
        xhr.upload.onprogress = function (e) {
          // e.lengthComputable 是一個(gè)布爾值,表示當(dāng)前上傳的資源是否具有可計(jì)算的長度
          if (e.lengthComputable) {
            // e.loaded 已傳輸?shù)淖止?jié)
            // e.total 需傳輸?shù)目傋止?jié)
            var percentComplete = Math.ceil((e.loaded / e.total) * 100);
            // 渲染BootStr進(jìn)度條
            $('#percent').attr('style', 'width:' + percentComplete + '%');
            $('#percent').html(percentComplete + '%');
          }
        };

        // 4.發(fā)起上傳文件的POST請(qǐng)求
        xhr.open('POST', 'http://www.liulongbin.top:3006/api/upload/avatar');
        xhr.send(fd);
        xhr.onreadystatechange = function () {
          if (xhr.readyState === 4 && xhr.status === 200) {
            var data = JSON.parse(xhr.responseText);
            // 根據(jù)返回的數(shù)據(jù)判斷文件是否上傳成功
            if (data.status === 200) {
              $('img').prop('src', 'http://www.liulongbin.top:3006' + data.url);
            } else {
              console.log('圖片上傳失敗');
            }
          }
        };

        // 6.文件上傳完成后的監(jiān)聽函數(shù)
        xhr.upload.onload = function () {
          $('#percent')
            // 移除上傳中的類樣式
            .removeClass()
            // 添加上傳完成的類樣式
            .addClass('progress-bar progress-bar-success');
        };
      });
    </script>

七、jQuery實(shí)現(xiàn)文件上傳(與進(jìn)度監(jiān)聽)

還是借助FormData對(duì)象上傳文件。
與上面的區(qū)別:
(1)上面使用XMLHttpRequest對(duì)象發(fā)送POST請(qǐng)求;jQuery必須使用ajax( )方法。
(2)Ajax請(qǐng)求中必須添加以下屬性

contentType: false,
processData: false,

(3)
使用原生js獲取數(shù)組:
var filesArr = document.querySelector('input').files
使用jQuery:
var filesArr = $('input')[0].files
(4)可以監(jiān)聽Ajax請(qǐng)求開始與結(jié)束的函數(shù)。

$(document).ajaxStart( callback( ) )

$(document).ajaxStop( callback( ) )

    <!-- 1.定義UI結(jié)構(gòu) -->
    <!-- 文件選擇框 -->
    <input type="file" />
    <!-- 上傳按鈕 -->
    <button>上傳</button>

    <script>
      // 發(fā)起Ajax請(qǐng)求時(shí)打印內(nèi)容
      $(document).ajaxStart(function () {
        console.log('發(fā)起了Ajax請(qǐng)求');
      });
      // Ajax請(qǐng)求結(jié)束時(shí)打印內(nèi)容
      $(document).ajaxStop(function () {
        console.log('Ajax請(qǐng)求結(jié)束了');
      });

      // 2.驗(yàn)證是否選擇了文件
      $('button').on('click', function () {
        var filesArr = $('input')[0].files; //文件選擇框的files屬性是一個(gè)數(shù)組
        if (filesArr.length <= 0) {
          return alert('請(qǐng)選擇上傳文件');
        }

        // 3.向FormData對(duì)象追加文件
        var fd = new FormData();
        fd.append('userFile', filesArr[0]);

        var xhr = new XMLHttpRequest();
        // 4.發(fā)送POST請(qǐng)求
        $.ajax({
          method: 'POST',
          url: 'http://www.liulongbin.top:3006/api/upload/avatar',
          data: fd,
          // 不修改 Content-Type 屬性,使用 FormData 默認(rèn)的 Content-Type 值
          contentType: false,
          // 不對(duì) FormData 中的數(shù)據(jù)進(jìn)行 url 編碼,而是將 FormData 數(shù)據(jù)原樣發(fā)送到服務(wù)器
          processData: false,
          success: function (res) {
            console.log(res);
          },
        });
      });
    </script>

八、axios

axios是一個(gè)只專注于數(shù)據(jù)請(qǐng)求的庫。

1.使用axios發(fā)起GET請(qǐng)求?。?.get( ))

①引入axios.js文件

axios.get ( " url " , { params:{參數(shù)} } ).then ( callback() )

2.使用axios發(fā)起POST請(qǐng)求  ( $.post( ) )

①引入axios.js文件

axios.post ( " url " , {參數(shù)} ).then ( callback() )

        // 2.使用axios發(fā)起get請(qǐng)求
        axios.get('http://www.liulongbin.top:3006/api/get',{params: {id:1}}).then(function(res){
            console.log(res.data);
        })
        // 3.使用axios發(fā)起POST請(qǐng)求
        axios.post('http://www.liulongbin.top:3006/api/post',{ location: '北京', address: '順義' }).
         then(function(res){
            console.log(res.data);
        })
3.直接使用axios發(fā)起請(qǐng)求 ( $.ajax( ) )

axios( {
   method:"請(qǐng)求類型",
   url: "URL地址",
   data: { POST數(shù)據(jù) }   或者
   params: { GET參數(shù) }
  } ).then(callback)

     // 1.發(fā)起GET請(qǐng)求
     axios({
       method: 'GET',
       url: 'http://www.liulongbin.top:3006/api/get',
       params: { id: 1 },
     }).then(function (res) {
       console.log(res.data);
     });

     // 2.發(fā)起POST請(qǐng)求
     axios({
       method: 'POST',
       url: 'http://www.liulongbin.top:3006/api/post',
       data: { bookname: '列夫托爾斯泰', author: '陰間出版社' },
     }).then(function (res) {
       console.log(res.data);
     });
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一.JQ對(duì)象與DOM對(duì)象區(qū)別 document.getElementById('test');:DOM對(duì)象$("#...
    cxyexe閱讀 320評(píng)論 0 2
  • 跨域的由來 實(shí)際上瀏覽器為了保證安全性,對(duì)ajax使用了一種同源策略 同源的意思就是:ajax發(fā)送請(qǐng)求的url地址...
    印象rcj閱讀 268評(píng)論 0 0
  • XML XML是一種標(biāo)記語言,很類似HTML,其宗旨是用來傳輸數(shù)據(jù),具有自我描述性(固定的格式的數(shù)據(jù))。 HTML...
    左耳擊水獸閱讀 279評(píng)論 0 0
  • AJAX - 阿賈克斯 1、URL 1、作用 用于表示互聯(lián)網(wǎng)上任意一個(gè)資源的位置 2、詳解 格式: :// : @...
    悅動(dòng)燃爆閱讀 511評(píng)論 0 0
  • 普通的事件注冊(cè)不能做事件委托,且無法實(shí)現(xiàn)事件解綁,需要借助其他方法。不能給動(dòng)態(tài)生成的元素綁定事件。 二、jQuer...
    大刀劈向鬼子閱讀 125評(píng)論 0 0

友情鏈接更多精彩內(nèi)容