Vue.js使用-http请求 - 迪米特

vue

Vue.js使用-http请求

Vue.js使用-ajax使用

1.为什么要使用ajax

前面的例子,使用的是本地模拟数据,通过ajax请求服务器数据。

2.使用jquery的ajax库示例

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;

$.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对象

// 基于全局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表达式写法。

//传统写法

this.$http.get(\'/someUrl\',[options]).then(function(response){

//响应成功回调

},function(response){

//响应错误回调

});

//Lambda写法

this.$http.get(\'someUrl\',[options]).then((response)=>{

//响应成功回调

},(response)=>{

//响应错误回调

});

5.vue-resource示例

<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对象使用示例如下:

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;

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

语法如下:

Vue.http.interceptors.push(function(request, next){

//...

//请求发送前的处理逻辑

//...

next(function(response){

//...

//请求发送后的处理逻辑

//...

//根据请求的状态,response参数会返回给successCallback或errorCallback

return response

})

})

8.拦截器interceptor使用示例

<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请求 - 迪米特 的全部内容, 来源链接: utcz.com/z/379463.html

回到顶部