Axios溝通前后端 – Vue3

    在VUE3中通過Axios獲取其他接口或JSON的值。

    什么是Axios?

    Axios 是一個基于 Promise 的 HTTP 庫,可以用在瀏覽器和 node.js 中。

    • 從瀏覽器創(chuàng)建?XMLHttpRequests
    • 從 node.js 創(chuàng)建?http?請求
    • 支持?Promise?API
    • 攔截請求和響應(yīng)
    • 轉(zhuǎn)換請求和響應(yīng)數(shù)據(jù)
    • 取消請求
    • 自動轉(zhuǎn)換JSON數(shù)據(jù)
    • 客戶端支持防御XSRF

    Axios有啥用?

    axios負責(zé)與后端交互,get、post后端接口信息,相當(dāng)前后端的窗口

    1. ?創(chuàng)建 http 請求,向后端發(fā)送請求并接收 返回的數(shù)據(jù)
    2. 自動轉(zhuǎn)換JSON數(shù)據(jù)(就相當(dāng)于把數(shù)據(jù)反序列化一下)
    3. 對返回的數(shù)據(jù)統(tǒng)一處理(相當(dāng)后臺數(shù)據(jù)統(tǒng)一過濾一遍,再傳給前端)
    4. 攔截請求和響應(yīng)

    如何使用?

    您現(xiàn)在需要將后端通過PHP提供的JSON數(shù)據(jù)展示在前端

    首先,我們撰寫json_data.php文件,輸入以下代碼,提供JSON文件,以供模擬

    <?php
    header('Content-Type:application/json');//加上這行,前端那邊就不需要var result = $.parseJSON(data);
    $retdata = array(
    "student"=>array("name"=>"feiq","sex"=>"male","age"=>18,"job"=>'agineer'),"superstar"=>array("name"=>"MM","sex"=>"female","age"=>20,"job"=>'signer')
    );
    echo json_encode($retdata);
    ?>

    我們撰寫index.html,展示PHP提供的,JSON的內(nèi)容

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title>從php文件中異步獲取json數(shù)據(jù)</title>
        <script src="https://unpkg.com/vue@next"></script>
        <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    </head>
    <body>
    <div id="myphp">
    <p>從php文件中讀取json數(shù)據(jù)</p>
        <ol>
            <li>名字</li>
            <li v-for="sites in info">{{sites.name}}</li>
        </ol>
        <ol>
            <li>性別</li>
            <li v-for="sites in info">{{sites.sex}}</li>
        </ol>
        <ol>
            <li>年齡</li>
            <li v-for="sites in info">{{sites.age}}</li>
        </ol>
        <ol>
            <li>職業(yè)</li>
            <li v-for="sites in info">{{sites.job}}</li>
        </ol>
    </div>
      <script>
        const App = Vue.createApp({
          data() {
            return {
              info: [],
            }
          },
          mounted() {
            axios
              .get('test.php')
              .then(response => {
                console.log(response);
                this.info = response.data;
              })
              .catch(function (error) {
                alert(error)
              })
          }
        })
        App.mount("#myphp")
      </script>
    </body>
    </html>

    其中的json_data.php文件,一般長這樣

    http://www.kartiktrivedi.com/test/json_data.php

    效果如下:

    Axios溝通前后端 - Vue3

    讀取一維數(shù)組,二維數(shù)組

    test.php提供JSON數(shù)據(jù)

    <?php
    header('Content-Type:application/json');//加上這行,前端那邊就不需要var result = $.parseJSON(data);
    $json_data = array ('id'=>1355471563,'name'=>"npc",'country'=>'usa',"office"=>array("microsoft",'oracle'=>'http://www.kartiktrivedi.com/'));
    $json_num = json_encode($json_data);
    echo $json_num;
    ?>

    index.php展示test.php的數(shù)據(jù)

    <!DOCTYPE html>
    <html lang="zh-CN">
    
    <head>
        <meta charset="UTF-8">
        <title>從php文件中異步獲取json數(shù)據(jù)</title>
        <script src="https://unpkg.com/vue@next"></script>
        <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    </head>
    
    <body>
        <div id="myphp">
            <p>從php文件中讀取json數(shù)據(jù)</p>
            <ol>
                <li>id</li>
                <li>{{this.info.id}}</li>
            </ol>
            <ol>
                <li>name的值</li>
                <li>{{this.info.name}}</li>
            </ol>
            <ol>
                <li>country</li>
                <li>{{this.info.country}}</li>
            </ol>
            <ol>
                <li>oracle的值</li>
                <li v-for="sites in info">{{sites.oracle}}</li>
            </ol>
    
            <ol>
                <li>彈出一維數(shù)組內(nèi)容</li>
                <li><button @click="openText()">彈出文本</button></li>
            </ol>
    
            <ol>
                <li>彈出二維數(shù)組內(nèi)容</li>
                <li><button @click="openLink()">彈出二維數(shù)組內(nèi)容</button></li>
            </ol>
    
        </div>
        <script>
            const App = Vue.createApp({
                data() {
                    return {
                        info: [],
                    }
                },
                methods: {
                    openText() {
                        alert(this.info.name)
                    },
    
                    openLink() {
                        alert(this.info.office.oracle)
                    }
                },
                mounted() {
                    axios
                        .get('test.php')
                        .then(response => {
                            console.log(response);
                            this.info = response.data;
                        })
                        .catch(function (error) {
                            alert(error)
                        })
                }
            })
            App.mount("#myphp")
        </script>
    </body>
    
    </html>

    展示效果

    Axios溝通前后端 - Vue3

    代碼解釋

    created() {
        //用axios去getphp文件'getshow.php'
        axios.get('getshow.php')
           //then獲取成功;response成功后的返回值(對象)
       .then(response=>{
        //可以打印出對象
         console.log(response);
        //將數(shù)據(jù)賦值給menulist
         this.menulist=response.data;
       })
           //抓住獲取失敗 提示錯誤
       .catch(error=>{
         console.log(error);
         alert('網(wǎng)絡(luò)錯誤,不能訪問');
       })
      },

    相關(guān)推薦

    開發(fā)微信小程序的URL Scheme – 前后端實戰(zhàn)項目

    參考文檔

    給TA贊賞
    共{{data.count}}人
    人已贊賞
    ??
    Npcink上的部份代碼及教程來源于互聯(lián)網(wǎng),僅供網(wǎng)友學(xué)習(xí)交流,若您喜歡本文可附上原文鏈接隨意轉(zhuǎn)載。
    無意侵害您的權(quán)益,請發(fā)送郵件至 1355471563#qq.com 或點擊右側(cè) 私信:Muze 反饋,我們將盡快處理。
    ?
    購物車
    優(yōu)惠劵
    搜索
    主站蜘蛛池模板: 亚洲国产高清在线精品一区| 久久国产精品无码一区二区三区 | 精品国产区一区二区三区在线观看| 精品国产一区二区三区久| 狠狠做深爱婷婷综合一区 | 99久久精品国产高清一区二区 | 国产MD视频一区二区三区| 无码午夜人妻一区二区三区不卡视频| 日本精品一区二区三区视频| 亚洲精品色播一区二区| 色婷婷一区二区三区四区成人网| 丝袜人妻一区二区三区| 亚洲av午夜精品一区二区三区| 精品国产一区二区三区| 亚洲AV成人一区二区三区在线看| 亚洲AV无码一区东京热| 无码少妇一区二区三区| 一区二区三区亚洲| 久久亚洲AV午夜福利精品一区| 成人无码AV一区二区| 中文人妻av高清一区二区| 丰满人妻一区二区三区免费视频| 无码人妻一区二区三区精品视频| 日韩一区二区在线免费观看| 爆乳无码AV一区二区三区| 亚洲Av无码国产一区二区| 成人免费视频一区| 综合一区自拍亚洲综合图区| 免费无码一区二区三区蜜桃大| 无码人妻精一区二区三区| 精品日韩一区二区| 人妻体内射精一区二区| 99久久精品国产免看国产一区| 中文字幕一区二区人妻性色 | 国产免费一区二区三区免费视频 | 国产日韩高清一区二区三区 | 国产在线乱子伦一区二区| 一本一道波多野结衣AV一区| 无码人妻精品一区二区三区9厂| 波多野结衣在线观看一区二区三区 | 国产香蕉一区二区精品视频|