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://www.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://www.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管理員
      暫無討論,說說你的看法吧
    ?
    個人中心
    購物車
    優惠劵
    今日簽到
    有新私信 私信列表
    搜索
    主站蜘蛛池模板: 国产精品一区二区四区| 久久综合一区二区无码| 日韩精品一区二区三区中文 | 国产成人精品亚洲一区| 在线观看国产一区二三区| 亚洲一区中文字幕在线观看| 久久国产精品无码一区二区三区| 又硬又粗又大一区二区三区视频| 人妻无码一区二区三区AV| 色窝窝免费一区二区三区 | 亚洲视频在线一区二区| 国产一区三区三区| 人妻体体内射精一区二区 | 中文字幕久久亚洲一区| 国产AV午夜精品一区二区三区| av无码免费一区二区三区| 国产一区二区三区在线观看免费| 一区二区三区在线观看视频 | 综合无码一区二区三区四区五区 | 国产视频福利一区| 精品视频一区二区三区| 中文字幕一区二区三区5566| 国产精品538一区二区在线| 日韩AV无码一区二区三区不卡毛片| 97一区二区三区四区久久| 卡通动漫中文字幕第一区| 中文字幕一区日韩在线视频| 国产高清在线精品一区| 国产伦精品一区二区三区| 亚洲AV网一区二区三区| 久久99国产精品一区二区| 无码人妻精品一区二区三区不卡| 中文字幕色AV一区二区三区| 无码日本电影一区二区网站| 国产亚洲福利精品一区| 国产主播福利精品一区二区| 久久精品无码一区二区无码| 精品免费久久久久国产一区| 精品国产一区二区三区在线| 无码午夜人妻一区二区三区不卡视频| 亚洲AV无码一区二区三区久久精品|