Vuejs发送Ajax请求
一、概况
①vuejs中没有内置任何ajax请求方法
②在vue1.0版本,使用的插件 vue resource 来发送请求,支持promise
③在vue2.0版本,使用社区的一个第三方库 axios ,也支持promise
④在HTML5时代,浏览器增加了一个特殊的异步请求方法 fetch,原生支持promise,由于兼容性问题,一般用于移动端
⑤还有的项目会使用vue和jquery混用,借助jQuery的ajax方法
二、axios库的使用
①安装和引入:
- npm直接下载axios组件,下载完毕后axios.js就存放在node_modules\axios\dist中
npm install axios
- 网上直接下载axios.min.js文件,或者使用cdn,通过script src的方式进行文件的引入
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
②发送get请求
- 基本使用格式:
axios([options]) #这种格式直接将所有数据写在options里,options其实是个字典
axios.get(url[,options]);
- 传参方式:通过url传参,通过params选项传参
- 案例:
<div id="app">
<button @click='send'>发送Ajax请求</button>
<button @click='sendGet'>GET方式发送Ajax请求</button>
</div>
<script src="node_modules/vue/dist/vue.js"></script>
<script src="node_modules/axios/dist/axios.min.js"></script>
<script>
new Vue({
el:'#app',
data:{
user:{name:'eric',age:24},
},
methods:{
send(){
axios({
method:'get',
url:'http://www.baidu.com?name=jack&age=30'
}).then(function(resp){
console.log(resp.data);
}).catch(err=>{
console.log('请求失败:'+err.status+','+err.statusText);
});
},
sendGet(){
axios.get('server.php',{
params:{name:'tom',age:20}
}).then(resp=>{
console.log(resp.data)
}).catch(resp=>{
console.log('请求失败:'+err.status+','+err.statusText);
});
},
},
});
</script>
③发送post请求(push,delete的非get方式的请求都一样)
- 基本使用格式
axios.post(url,data,[options]);
- 传参方式:自己拼接为键值对;使用transformRequest,在请求发送前将请求数据进行转换;如果使用模块化开发,可以使用qs模块进行转换;
- 注意:axios默认发送post数据时,数据格式是Request Payload,并非我们常用的Form Data格式,所以参数必须要以键值对形式传递,不能以json形式传参
- 案例:
<div id="app">
<button @click='sendPost'>post方式发送Ajax请求</button>
</div>
<script src="node_modules/vue/dist/vue.js"></script>
<script src="node_modules/axios/dist/axios.min.js"></script>
<script>
new Vue({
el:'#app',
data:{
user:{name:'eric',age:24},
},
methods:{
sendPost(){
axios.post('server.php',this.user,{
transformRequest:[
function(data){
let params='';
for(let index in data){
params+=index+'='+data[index]+'&';
}
return params;
}
]
}).then(resp=>{
console.log(resp.data)
}).catch(err=>{
console.log('请求失败:'+err.status+','+err.statusText);
});
},
},
});
</script>
④发送跨域请求:axios本身并不支持发送跨域的请求,没有提供相应的API,作者也暂没计划在axios添加支持发送跨域请求,所以只能使用第三方库,可以使用vue-resource发送跨域请求
Vuejs发送Ajax请求的更多相关文章
- 在发送ajax请求时加时间戳或者随机数去除js缓存
在发送ajax请求的时候,为了保证每次的都与服务器交互,就要传递一个参数每次都不一样,这里就用了时间戳 大家在系统开发中都可能会在js中用到ajax或者dwr,因为IE的缓存,使得我们在填入相同的值的 ...
- 原生js发送ajax请求
堕落了一阵子了,今天打开博客,发现连登录的用户名和密码都不记得了.2016年已过半,不能再这么晃荡下去了. 参加了网易微专业-前端攻城狮 培训,目前进行到大作业开发阶段,感觉举步维艰.但是无论如何,不 ...
- jQuery发送ajax请求
利用jquery发送ajax请求的几个模板代码. $.ajax({ async : false, type: 'POST', dataType : "json", url: &qu ...
- JQuery发送ajax请求不能用数组作为参数
JQuery发送ajax请求不能用数组作为参数,否则会接收不到参数, 一.js代码如下: $('#delete-button').click(function(){ var select ...
- js中使用队列发送ajax请求
最近,项目中需要按照先后顺序发送ajax请求,并且在一次请求结束后才能发起下一次,不然就会导致逻辑错误. 解决办法是定义一个数组,保存ajax请求数据. 以下使用extjs4定义一个类 Ext.def ...
- IE6下a标签上发送ajax请求总是error
IE6下真是处处是坑啊!!!走过了一个又一个坑,记录一下吧. 之前不知道a标签上注册click事件之后,发送ajax请求总是error.后来经过几番网上搜索,终于找到高人遇到此坑的解决办法.原来是a标 ...
- Jquery发送ajax请求以及datatype参数为text/JSON方式
Jquery发送ajax请求以及datatype参数为text/JSON方式 1.方式一:datatype:'text' 2.方式二:datatype:'JSON' 3.使用gson-1.5.jar包 ...
- 【liferay】1、使用alloy-UI发送ajax请求
1.首先liferay要发送ajax请求,那么就需要在jsp中定义resourceURL <portlet:resourceURL var="workDeal" id=&qu ...
- Axios发送AJAX请求
目录 Axios 特征 axios提供主要三种发起请求的方式 方式一:直接axios实例直接call方式 方式二:通过axios实例提供的不同http请求方式的方法 方式三:其实是从第二种方式中单独提 ...
随机推荐
- Promise实现子组件的多表单校验并反馈结果给父组件
全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/11529207.html,多谢,=.=~ 本文中多表单验证主要用到Promise.all()实现多 ...
- IntelliJ IDEA启动一个普通的java web项目的配置
文:朱季谦 这是我很久以前刚开始用IntelliJ IDEA时记录的笔记,正好赶上最近离职了,可以有比较多的时间把以前的记录整理一下,可以让刚接触到IntelliJ IDEA的童鞋学习如何在Intel ...
- Mysql中的排序查询
进阶3:排序查询 语法: select 查询列表 from 表 [where 筛选条件]order by 排序列表 [asc 升序 | desc降序] 例子 查询员工信息,要求工资从高到低 SELEC ...
- InvalidOperationException: No file provider has been configured to process the supplied file.
现在有一个api, 提供图片的下载,如下代码,,调试出现 InvalidOperationException: No file provider has been configured to proc ...
- MyCat教程一:MyCat的简单介绍
MyCat教程二:mysql主从复制实现 MyCat教程三:安装及配置介绍 MyCat教程四:实现读写分离 MyCat教程五:实现分库分表 MyCat教程六:全局序列号-全局主键的自增长 一.MyCa ...
- 动态路由 RIP
不同网段之间进行通信,中间有多个路由器的情况下,我们可以通过配置RIP动态路由来实现数据转发. 实验拓扑 如图所示连接,地址规划如下: 名称 接口 IP地址 R1 f0/0 192.168.10.1/ ...
- go build -tags 的使用
go build 使用tag来实现编译不同的文件 go-tooling-workshop 中关于go build的讲解可以了解到go bulid的一些用法,这篇文章最后要求实现一个根据go bulid ...
- 详解Linux操作系统的iptables原理及配置
linux网络防火墙 netfilter :内核中的框架,过滤框架,网络过滤器! iptables :实现数据过滤.net.mangle等规则生成的工具 防火墙:硬件.软件.规则(匹配规则.处理办法 ...
- Android adb连接后adb devices显示unauthorized解决办法
adb链接手机后,显示unauthorized.原因是命令所在目录不对,这个adb devices命令是在夜神模拟器目录下执行的,所以出现该问题,切换目录后解决: 如果切换目录后仍然不行:重启adb. ...
- SpringBoot项目的测试类
1. package soundsystem; import static org.junit.Assert.*; import org.junit.Test; import org.junit.ru ...