Axios溝通前后端 – Vue3

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

    什么是Axios?

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

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

    Axios有啥用?

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

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

    如何使用?

    您現(xiàn)在需要將后端通過(guò)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文件,一般長(zhǎng)這樣

    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成功后的返回值(對(duì)象)
       .then(response=>{
        //可以打印出對(duì)象
         console.log(response);
        //將數(shù)據(jù)賦值給menulist
         this.menulist=response.data;
       })
           //抓住獲取失敗 提示錯(cuò)誤
       .catch(error=>{
         console.log(error);
         alert('網(wǎng)絡(luò)錯(cuò)誤,不能訪問(wèn)');
       })
      },

    相關(guān)推薦

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

    參考文檔

    給TA贊賞
    共{{data.count}}人
    人已贊賞
    ??
    Npcink上的部份代碼及教程來(lái)源于互聯(lián)網(wǎng),僅供網(wǎng)友學(xué)習(xí)交流,若您喜歡本文可附上原文鏈接隨意轉(zhuǎn)載。
    無(wú)意侵害您的權(quán)益,請(qǐng)發(fā)送郵件至 1355471563#qq.com 或點(diǎn)擊右側(cè) 私信:Muze 反饋,我們將盡快處理。
    ?
    購(gòu)物車
    優(yōu)惠劵
    搜索
    主站蜘蛛池模板: 色狠狠色噜噜Av天堂一区| 国产精品伦一区二区三级视频| 国产av天堂一区二区三区 | 无码国产精品一区二区免费vr | 国产怡春院无码一区二区| 国产99视频精品一区| 波多野结衣在线观看一区| 亚洲AV无码一区东京热| 日韩伦理一区二区| 久久高清一区二区三区| 卡通动漫中文字幕第一区| 自慰无码一区二区三区| 国产精品视频一区二区猎奇| 国产精品区AV一区二区| 亚洲Av永久无码精品一区二区 | 国产精品女同一区二区久久| 亚洲色精品aⅴ一区区三区| 亚洲国产一区在线| 视频在线一区二区| 亚洲AV成人一区二区三区观看 | 中文字幕一区二区三区视频在线| 国产成人综合一区精品| 国产伦一区二区三区高清| 一区二区三区日本电影| 八戒久久精品一区二区三区| 老熟妇仑乱一区二区视頻| 激情综合一区二区三区| 国模大尺度视频一区二区| 中文字幕一区二区视频| 亚洲色精品aⅴ一区区三区| 一区二区三区视频在线播放| 国产A∨国片精品一区二区| 一区二区三区在线观看中文字幕| 国产精品毛片a∨一区二区三区 | 综合无码一区二区三区四区五区| 亚洲一区二区三区四区在线观看 | 一区二区三区四区视频在线| 精品人妻少妇一区二区| 国产亚洲情侣一区二区无码AV| 日本不卡一区二区三区视频| 亚洲va乱码一区二区三区|