Axios溝通前后端 - Vue3

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

    什么是Axios?

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

    • 從瀏覽器創建?XMLHttpRequests
    • 從 node.js 創建?http?請求
    • 支持?Promise?API
    • 攔截請求和響應
    • 轉換請求和響應數據
    • 取消請求
    • 自動轉換JSON數據
    • 客戶端支持防御XSRF

    Axios有啥用?

    axios負責與后端交互,get、post后端接口信息,相當前后端的窗口

    1. ?創建 http 請求,向后端發送請求并接收 返回的數據
    2. 自動轉換JSON數據(就相當于把數據反序列化一下)
    3. 對返回的數據統一處理(相當后臺數據統一過濾一遍,再傳給前端)
    4. 攔截請求和響應

    如何使用?

    您現在需要將后端通過PHP提供的JSON數據展示在前端

    首先,我們撰寫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的內容

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title>從php文件中異步獲取json數據</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數據</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>職業</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://m.kartiktrivedi.com/test/json_data.php

    效果如下:

    Axios溝通前后端 - Vue3

    讀取一維數組,二維數組

    test.php提供JSON數據

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

    index.php展示test.php的數據

    <!DOCTYPE html>
    <html lang="zh-CN">
    
    <head>
        <meta charset="UTF-8">
        <title>從php文件中異步獲取json數據</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數據</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>彈出一維數組內容</li>
                <li><button @click="openText()">彈出文本</button></li>
            </ol>
    
            <ol>
                <li>彈出二維數組內容</li>
                <li><button @click="openLink()">彈出二維數組內容</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);
        //將數據賦值給menulist
         this.menulist=response.data;
       })
           //抓住獲取失敗 提示錯誤
       .catch(error=>{
         console.log(error);
         alert('網絡錯誤,不能訪問');
       })
      },

    相關推薦

    Axios溝通前后端 - Vue3-Npcink
    Axios溝通前后端 - Vue3-Npcink

    開發微信小程序的URL Scheme - 前后端實戰項目

    參考文檔

    VUE模塊

    區別:ref和reactive

    2022-9-2 9:35:36

    VUE模塊

    setTimeout定時執行一個函數 - Vue3

    2022-9-11 17:20:10

    ??
    Npcink上的部份代碼及教程來源于互聯網,僅供網友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
    無意侵害您的權益,請發送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
    0 條回復 A文章作者 M管理員
      暫無討論,說說你的看法吧
    ?
    個人中心
    購物車
    優惠劵
    今日簽到
    有新私信 私信列表
    搜索
    主站蜘蛛池模板: 国产无吗一区二区三区在线欢| 亚洲第一区精品日韩在线播放| 国产在线无码视频一区二区三区 | 国产精品一区二区三区99| 精品福利一区二区三区| 久久综合亚洲色一区二区三区| 国产伦理一区二区三区| 99精品一区二区三区| 精品一区二区三区四区在线| 国产在线一区二区杨幂| 国产大秀视频在线一区二区| 国产午夜福利精品一区二区三区 | 亚洲AV成人精品日韩一区| 国产在线无码视频一区二区三区| 激情综合丝袜美女一区二区| 亚洲国产成人久久一区二区三区| 无码国产精品一区二区免费式芒果| 国产精品免费大片一区二区| 精品人妻一区二区三区四区| 亚洲av无码一区二区三区天堂| 亚洲一区影音先锋色资源| 国产一区二区三区在线影院| 一区二区中文字幕在线观看| 无码精品不卡一区二区三区| AV鲁丝一区鲁丝二区鲁丝三区| 久久精品免费一区二区三区| 香蕉在线精品一区二区| 国产精品被窝福利一区| 小泽玛丽无码视频一区| 秋霞电影网一区二区三区| 成人免费一区二区三区在线观看| 中文字幕日韩精品一区二区三区 | 国产经典一区二区三区蜜芽| 无码人妻一区二区三区免费看| 日本道免费精品一区二区| 在线精品亚洲一区二区三区| 波多野结衣的AV一区二区三区| 国产一区二区三区免费观看在线| 久久国产三级无码一区二区| 在线观看国产一区| 亚洲国产精品一区二区成人片国内 |