1. 程式人生 > >Vue--axios:vue中的ajax異步請求(發送和請求數據)

Vue--axios:vue中的ajax異步請求(發送和請求數據)

lan his src 操作 ajax請求 itl func gin 出錯

一.使用axios發送get請求

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4 <meta charset="UTF-8">
 5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7 <title>Document</title>   
 8
<script src="../vue2.4.4.js"></script> 9 <script src="../axios.js"></script> 10 11 </head> 12 13 <body> 14 <!-- 定義一個vue的管理區塊,(MVVM中的View) --> 15 <div id="app"> 16 <button @click="getApiData">點擊得到數據</button> 17 {{name}} 18 </div> 19
20 </body> 21 22 <script> 23 24 // 實例化vue對象(MVVM中的View Model) 25 new Vue({ 26 // vm控制的區塊為id為app的div,此div中的所有vue指令均可以被vm解析 27 el:‘#app‘, 28 data:{ 29 // 數據 (MVVM中的Model) 30 name:"" 31 }, 32 methods:{ 33 getApiData:function
() { 34 //設置請求路徑 35 var url = "http://157.122.54.189:9093/api/getprodlist"; 36 // 發送請求:將數據返回到一個回到函數中 37 _this= this; 38 // 並且響應成功以後會執行then方法中的回調函數 39 axios.get(url).then(function(result) { 40 // result是所有的返回回來的數據 41 // 包括了響應報文行 42 // 響應報文頭 43 // 響應報文體 44 console.log(result.data.message[0]); 45 _this.name = result.data.message[0].name; 46 }); 47 }
48 } 49 }) 50 </script> 51 </html>

二.使用axios發送post請求

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4 <meta charset="UTF-8">
 5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7 <title>Document</title>   
 8 <script src="../vue2.4.4.js"></script>
 9 <script src="../axios.js"></script>
10 
11 </head>
12 
13 <body>
14 <!-- 定義一個vue的管理區塊,(MVVM中的View) -->
15 <div id="app">
16     <button @click="postApiData">點擊提交數據</button>
17 </div>
18 
19 </body>
20 
21 <script>
22 
23     // 實例化vue對象(MVVM中的View Model)
24     new Vue({
25         // vm控制的區塊為id為app的div,此div中的所有vue指令均可以被vm解析
26         el:‘#app‘,
27         data:{
28         // 數據 (MVVM中的Model)   
29         },
30         methods:{
31             postApiData:function() {
32                 var url = "http://157.122.54.189:9093/api/addproduct";
33                 // post有兩個參數
34                 //參數1:請求的路徑
35                 //參數2:提交的參數
36                 //提交參數的兩種形態:
37                 //          1.可以直接傳入字符串 name=張三&age=19
38                 //          2.可以以對象的形式傳入{name:"三",age:19}
39                 axios.post(url,{name:"拖油瓶前來報道"}).then(function(res) {
40                    var resData = res.data;
41                    if(resData.status == "0") { //0表示成功,1表示失敗    
42                         alert(resData.message);
43                    }else{
44                         alert(resData.message);
45                    } 
46                 });
47 
48             }
49         }
50     })
51 </script>
52 </html>

三.使用axios發送post或get請求細節處理

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4 <meta charset="UTF-8">
 5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7 <title>Document</title>   
 8 <script src="../vue2.4.4.js"></script>
 9 <script src="../axios.js"></script>
10 
11 </head>
12 
13 <body>
14 <!-- 定義一個vue的管理區塊,(MVVM中的View) -->
15 <div id="app">
16      <button @click="getApiData">點擊得到數據</button>
17      <button @click="postApiData">點擊提交數據</button>
18     {{name}}
19   
20 </div>
21 
22 </body>
23 
24 <script>
25     //細節處理一:可以給axios的ajax請求設置統一的主機和端口號
26     axios.defaults.baseURL = "http://157.122.54.189:9093/";
27     //細節處理二: 可以將axios這個對象添加到Vue的原型對象中,將來在使用的時候就只需要使用this.對象名就可以了
28     Vue.prototype.$http = axios;
29 
30 
31     // 實例化vue對象(MVVM中的View Model)
32     new Vue({
33         // vm控制的區塊為id為app的div,此div中的所有vue指令均可以被vm解析
34         el:‘#app‘,
35         data:{
36         // 數據 (MVVM中的Model) 
37         name:"" 
38         },
39         methods:{ 
40             getApiData:function() {
41             //設置請求路徑
42             var url  = "api/getprodlist";                
43             // 發送請求:將數據返回到一個回到函數中
44             _this= this;
45             // 並且響應成功以後會執行then方法中的回調函數
46             this.$http.get(url).then(function(result) {
47                 // result是所有的返回回來的數據
48                 // 包括了響應報文行
49                 // 響應報文頭
50                 // 響應報文體
51                 _this.name = result.data.message[0].name;
52             }).catch(function(){
53                 alert("出錯了");
54             });    
55             },
56 
57             postApiData:function() {
58                 var url = "api/addproduct";
59                 // post有兩個參數
60                 //參數1:請求的路徑
61                 //參數2:提交的參數
62                 //提交參數的兩種形態:
63                 //          1.可以直接傳入字符串 name=張三&age=19
64                 //          2.可以以對象的形式傳入{name:"三",age:19}
65                 this.$http.post(url,{name:"拖油瓶前來報道3 "}).then(function(res) {
66                    var resData = res.data;
67                    if(resData.status == "0") { //0表示成功,1表示失敗    
68                         alert(resData.message);
69                    }else{
70                         alert(resData.message);
71                    }
72                 }).catch(function(){
73                      alert("出錯了");
74                 }); ;
75 
76             }
77         }
78     })
79 </script>
80 </html>

四.使用axios完成品牌管理

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 
  4 <head>
  5     <meta charset="UTF-8">
  6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8     <title>Document</title>
  9     <style>
 10         #app {
 11             width: 600px;
 12             margin: 10px auto;
 13         }
 14 
 15         .tb {
 16             border-collapse: collapse;
 17             width: 100%;
 18         }
 19 
 20         .tb th {
 21             background-color: #0094ff;
 22             color: white;
 23         }
 24 
 25         .tb td,
 26         .tb th {
 27             padding: 5px;
 28             border: 1px solid black;
 29             text-align: center;
 30         }
 31 
 32         .add {
 33             padding: 5px;
 34             border: 1px solid black;
 35             margin-bottom: 10px;
 36         }
 37     </style>
 38     <script src="../vue2.4.4.js"></script>
 39     <script src="../axios.js"></script>
 40 </head>
 41 
 42 <body>
 43     <div id="app">
 44         <div class="add">
 45             品牌名稱: <input v-model="name" type="text">
 46             <button @click="add">添加</button>
 47         </div>
 48         <div class="add">品牌名稱:<input type="text"></div>
 49         <div>
 50             <table class="tb">
 51                 <tr>
 52                     <th>編號</th>
 53                     <th>品牌名稱</th>
 54                     <th>創立時間</th>
 55                     <th>操作</th>
 56                 </tr>
 57                 <tr v-if="list.length <= 0">
 58                     <td colspan="4">沒有品牌數據</td>
 59                 </tr>
 60                 <!--加入: key="index" 時候必須把所有參數寫完整  -->
 61                 <tr v-for="(item,key,index) in list" :key="index">
 62                     <td>{{item.id}}</td>
 63                     <td>{{item.name}}</td>
 64                     <td>{{item.ctime}}</td>
 65                     <td><a href="#" @click="del(item.id)">刪除</a></td>
 66                 </tr>
 67             </table>
 68         </div>
 69 
 70     </div>
 71 </body>
 72 
 73 </html>
 74 
 75 <script>
 76     // 1 將所有的主機名和端口 一起設置
 77     axios.defaults.baseURL = "http://157.122.54.189:9093";
 78     // 2 將axios添加到Vue的原型對象中
 79     Vue.prototype.$http = axios;
 80 
 81     var vm = new Vue({
 82         el: "#app",
 83         data: {
 84             name: ‘‘,
 85             list: []  // 數據應該來源於服務器提供的api
 86         },
 87         mounted:function() { //鉤子函數
 88             this.getList();
 89         },
 90         methods: {
 91             // 得到所有的列表數據,這個方法應該等頁面加載完成以後直接被調用的
 92             getList:function() {
 93                 var url = "/api/getprodlist";
 94                 // 改變this的指向
 95                 _this = this;
 96                 this.$http.get(url).then(function(result){
 97                     var res = result.data;
 98                     if(res.status ==  0) {
 99                         //將數據賦值給list
100                         _this.list = res.message;     
101                     }else{
102                         alert("出錯了");
103                     }
104                 }).catch(function(){
105                     alert("出錯了");
106                 });
107             },
108             // 得到文本框中的值,並且將值通過api提交到服務器
109             add:function() {
110                 var url = "/api/addproduct";
111                 _this = this;
112                 // 得到name屬性對應的值
113                 this.$http.post(url,{"name":this.name}).then(function(result){
114                     var res = result.data;
115                     if(res.status == "0") {
116                         alert(res.message);
117                         _this.getList();
118                     }else{
119                         alert(res.message);
120                     }
121                 }).catch(function() {
122                     alert("出錯了");
123                 });
124             },
125             del:function(id){
126                 //格局id刪除數據
127                 var url =   "/api/delproduct/"+id;
128                 // 發送異步請求
129                 _this = this;
130                 this.$http.get(url).then(function(result){
131                     var res = result.data;
132                     if(res.status == "0") {
133                         alert(res.message);
134                         //更新數據
135                         _this.getList();
136                     }else{
137                         alert(res.message);
138                     }
139                     
140                 }).catch(function(){
141                     alert("出錯了");
142                 });
143             }
144         }
145     });
146 
147 </script>

Vue--axios:vue中的ajax異步請求(發送和請求數據)