Vue + axios vue發送異步請求

1 axios

axios:功能強大的網絡請求庫

導入:

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

導入後,就會註冊一個axios全局對象,可以通過它發送請求了。

語法:

axios.get("url地址")
         .then(function(response)
     {
        
     },function(err){
          
         }
     )

then方法中的回調函數會在請求成功或失敗時候觸發,通過回調函數的形參可以獲取響應內容或者錯誤信息。

例子:

兩個接口,一個get,一個post

<body>
<!--準備一個被vue掛載的容器div-->
<div id="app">
    <input type="button" value="get請求" class="get"/>
    <input type="button" value="post請求" class="post"/>
</div>


<script>

    /* 接口1 隨機笑話
       請求地址:https://autumnfish.cn/api/joke/list
       請求參數:num(笑話條數)
       響應內容:隨機笑話
    */
 document.querySelector(".get").onclick=function(){
     axios.get("https://autumnfish.cn/api/joke/list?num=3")
         .then(function(response)
     {
         console.log(response);
     },function(err){
             console.log(err);
         }
     )
 }

 /*接口2 用戶註冊
 請求地址:https://autumnfish.cn/api/user/reg
 請求參數:username(用戶名,字符串)
 響應內容:註冊成功或失敗
  */

 document.querySelector(".post").onclick=function(){
     axios.post("https://autumnfish.cn/api/user/reg", {username:"jack"})
         .then(function(response)
             {
                 console.log(response);
             },function(err){
                 console.log(err);
             }
         )
 }

</script>
</body>

 

2 Vue+axios

<body>
<!--準備一個被vue掛載的容器div-->
<div id="app">
    <input type="button" value="獲取笑話" @click="getJoke" />
    <p>
        {{ joke }}
    </p>
</div>


<script>
    var app=new Vue(
        {
            el:"#app",
            data:{
                joke:"笑話"
            },
            methods:{
                getJoke:function()
                {
                    var that=this;
                    axios.get("https://autumnfish.cn/api/joke")
                        .then(function(response)
                            {
                                that.joke=response.data;
                            },function(err){
                                console.log(err);
                            }
                        )
                }
            }
        }
    )

</script>
</body>

注意,響應成功的回調函數中this已經改變了,不是指向app這個vue實例了,用that保存this,之後that.joke=response.data;,就可以顯示joke了。that指向在回調函數之前this指向的對象了。

效果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章