Vue.js使用-http请求
Vue.js使用-ajax使用
1.为什么要使用ajax
前面的例子,使用的是本地模拟数据,通过ajax请求服务器数据。
2.使用jquery的ajax库示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29new Vue({ el: '#app', data: { searchQuery: '', columns: [{name: 'name', iskey: true}, {name: 'age'},{name: 'sex', dataSource:['Male', 'Female']}], peoples: [] }, ready: function () { this.getPeoples(); }, methods: { getPeoples: function () { var vm = this; $.ajax({ url: 'http://localhost:20000/my_test', type: 'get', dataType: 'json', success: function (data) { vm.$set('peoples', data.result); }, error: function(xhr, errorType, error) { alert('Ajax request error, errorType: ' + errorType + ', error: ' + error) } }); } } })
3.vue-resource库
vue是基于数据驱动的,不需要直接操作DOM,因此没有必要引入jquery
vue提供了一款轻量的http请求库,vue-resource
vue-resource除了提供http请求外,还提供了inteceptor拦截器功能,在访问前,访问后,做处理。
4.vue-resource语法-使用$http对象
1
2
3
4
5
6
7// 基于全局Vue对象使用http Vue.http.get('/someUrl',[options]).then(successCallback, errorCallback); Vue.http.post('/someUrl',[body],[options]).then(successCallback, errorCallback); // 在一个Vue实例内使用$http this.$http.get('/someUrl',[options]).then(sucessCallback, errorCallback); this.$http.post('/someUrl',[body],[options]).then(successCallback, errorCallback);
then方法的回调函数写法有两种,第一种是传统的函数写法,第二种是更简洁的Lambda表达式写法。
1
2
3
4
5
6
7
8
9
10
11
12
13//传统写法 this.$http.get('/someUrl',[options]).then(function(response){ //响应成功回调 },function(response){ //响应错误回调 }); //Lambda写法 this.$http.get('someUrl',[options]).then((response)=>{ //响应成功回调 },(response)=>{ //响应错误回调 });
5.vue-resource示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27<script src="js/vue-resource.js"></script> <script> new Vue({ el: '#app', data: { searchQuery: '', columns: [{name: 'name', iskey: true}, {name: 'age'},{name: 'sex', dataSource:['Male', 'Female']}], peoples: [] }, ready: function () { this.getPeoples(); }, methods: { getPeoples: function () { var vm = this; vm.$http.get('http://localhost:20000/my_test').then( function (data) { var newdata = JSON.parse(data.body) vm.$set('peoples', newdata.result) }).catch(function (response) { console.log(response) }) } } }) </script>
6.vue-resource用法-使用$resource对象
除了使用$http对象访问http,还可以使用$resource对象来访问。
resource服务默认提供以下几种action:
get:{method: 'GET'},
save:{method: 'POST'},
query:{method: 'GET'},
update:{method: 'PUT'},
remove:{method: 'DELETE'},
delete:{method: 'DELETE'},
resource对象使用示例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25new Vue({ el: '#app', data: { searchQuery: '', columns: [{name: 'name', iskey: true}, {name: 'age'},{name: 'sex', dataSource:['Male', 'Female']}], peoples: [] }, ready: function () { this.getPeoples(); }, methods: { getPeoples: function () { var vm = this; var resource = this.$resource('http://localhost:20000/my_test') resource.get().then( function (data) { var newdata = JSON.parse(data.body) vm.$set('peoples', newdata.result) }).catch(function (response) { console.log(response) }) } } })
7.拦截器interceptor
语法如下:
1
2
3
4
5
6
7
8
9
10
11
12
13Vue.http.interceptors.push(function(request, next){ //... //请求发送前的处理逻辑 //... next(function(response){ //... //请求发送后的处理逻辑 //... //根据请求的状态,response参数会返回给successCallback或errorCallback return response }) })
8.拦截器interceptor使用示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33<div id="help"> <loading v-show="showLoading"></loading> </div> <template id="loading-template"> <div class="loading-overlay"> <div class="sk-three-bounce"> <div class="sk-child sk-bounce1"></div> <div class="sk-child sk-bounce2"></div> <div class="sk-child sk-bounce3"></div> </div> </div> </template> <script> var help = new Vue({ el: '#help', data: { showLoading: false }, components: { 'loading': { template: '#loading-template' } } }) Vue.http.interceptors.push(function(request, next){ help.showLoading = true next(function (response) { help.showLoading = false return response }) }) </script>
9.vue-resource的优点
vue-resource比jquery轻量,可以使用Vue.http或者Vue.resource处理HTTP请求,两者没有什么区别。
另外可以是用interceptor在请求前和请求后附加一些行为。
最后
以上就是喜悦钢铁侠最近收集整理的关于Vue.js使用-http请求的全部内容,更多相关Vue内容请搜索靠谱客的其他文章。
发表评论 取消回复