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请求的更多相关文章
- Vue.js之Ajax请求
Vue.js同React.Angular,可以说号称前端三巨头. 前段时间,有个哥们说,Vue.js现在出2.0版本了.可是我现在还是在用1.0的. Vue.js一直都没有好好系统的学习,包括目前公司 ...
- vue.js中ajax请求
<div id="app"> <table style="border-collapse: collapse"> <thead&g ...
- vue.js遍历ajax请求的数据
<div id="dv" style="text-align: center;"><div class="head input-gr ...
- 基于vue.js实现远程请求json的select控件
基本思路 前端把需要的参数类型编码传到后台,后台返回相应的参数列表json,前端利用vue渲染select控件 具体实现 前端代码 <select v-model="template. ...
- leyou_04_vue.js的ajax请求方式
1.异步查询数据,自然是通过ajax查询,大家首先想起的肯定是jQuery.但jQuery与MVVM的思想不吻合,而且ajax只是jQuery的一小部分.因此不可能为了发起ajax请求而去引用这么大的 ...
- vue.js 请求数据
VUE.JS var vm = new Vue({ el:"#list", data:{ gridData: "", }, mounted: function( ...
- 从零开始学 Web 之 Vue.js(四)Vue的Ajax请求和跨域
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- Vue.js 2.0 跨域请求数据
Vuejs由1.0更新到了2.0版本.HTTP请求官方也从推荐使用Vue-Resoure变为了 axios .接下来我们来简单地用axios进行一下异步请求.(阅读本文作者默认读者具有使用npm命令的 ...
- vue.js学习之 跨域请求代理与axios传参
vue.js学习之 跨域请求代理与axios传参 一:跨域请求代理 1:打开config/index.js module.exports{ dev: { } } 在这里面找到proxyTable{}, ...
随机推荐
- iOS12 Network框架 自签名证书认证
发布时间:2018-09-21 技术:iOS12 xcode10 golang1.11 概述 iOS12 苹果发布了新的网络框架Network,可以更方便地操作底层网络通信了.使用TLS也很方 ...
- ios中布局(推荐一)
- (void)viewDidLoad { [super viewDidLoad]; NSArray *data=@[@"标题一",@"标题二",@" ...
- servlet 让浏览器输出中文,并成功打印出来.2种方法
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; impor ...
- windbg(1)
1.http://www.cnblogs.com/huangyong9527/category/384128.html 2.http://www.cnblogs.com/pugang/category ...
- 【Servlet】深入浅出JavaServlet重定向和请求转发
import java.text.*; import java.util.*; import java.io.*; import javax.servlet.http.*; import javax. ...
- 【javascript】escape()、encodeURI()、encodeURIComponent()区别详解
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decod ...
- cmake3.8X64编译opencv3.2出现opencv_ffmpeg、opencv_ffmpeg_64、ippicv_windows_20151201.zip无法下载问题解决方案
cmake版本:cmake3.8.0 开发环境:Visual Studio 2017 x64 解决方法:1.在opencv安装目录下sources\3rdparty\ffmpeg\ffmpeg.cma ...
- C# Deldegate的使用
Delegate类简介 ------------------------ 命名空间:System 程序集:mscorlib(在 mscorlib.dll 中) 委托(Delegate)类是一种数据结构 ...
- 懒得说IE6了,写个js插件不能写注释,原因如下
变态的ie6将注释当代码解释 ie6宽松的安全环境对于开发人员是开心的,比如运行速度快(对于ie7/8/9).支持部份文件操作等.但也有很多烦忧,比如对数组.对象的检测比较机械,这还不算什么,这两天让 ...
- mvc 文件压缩 减少文件大小
using System; using System.Collections.Generic; using System.IO.Compression; using System.Linq; usin ...