一、概况

①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请求的更多相关文章

  1. 在发送ajax请求时加时间戳或者随机数去除js缓存

    在发送ajax请求的时候,为了保证每次的都与服务器交互,就要传递一个参数每次都不一样,这里就用了时间戳 大家在系统开发中都可能会在js中用到ajax或者dwr,因为IE的缓存,使得我们在填入相同的值的 ...

  2. 原生js发送ajax请求

    堕落了一阵子了,今天打开博客,发现连登录的用户名和密码都不记得了.2016年已过半,不能再这么晃荡下去了. 参加了网易微专业-前端攻城狮 培训,目前进行到大作业开发阶段,感觉举步维艰.但是无论如何,不 ...

  3. jQuery发送ajax请求

    利用jquery发送ajax请求的几个模板代码. $.ajax({ async : false, type: 'POST', dataType : "json", url: &qu ...

  4. JQuery发送ajax请求不能用数组作为参数

    JQuery发送ajax请求不能用数组作为参数,否则会接收不到参数, 一.js代码如下: $('#delete-button').click(function(){        var select ...

  5. js中使用队列发送ajax请求

    最近,项目中需要按照先后顺序发送ajax请求,并且在一次请求结束后才能发起下一次,不然就会导致逻辑错误. 解决办法是定义一个数组,保存ajax请求数据. 以下使用extjs4定义一个类 Ext.def ...

  6. IE6下a标签上发送ajax请求总是error

    IE6下真是处处是坑啊!!!走过了一个又一个坑,记录一下吧. 之前不知道a标签上注册click事件之后,发送ajax请求总是error.后来经过几番网上搜索,终于找到高人遇到此坑的解决办法.原来是a标 ...

  7. Jquery发送ajax请求以及datatype参数为text/JSON方式

    Jquery发送ajax请求以及datatype参数为text/JSON方式 1.方式一:datatype:'text' 2.方式二:datatype:'JSON' 3.使用gson-1.5.jar包 ...

  8. 【liferay】1、使用alloy-UI发送ajax请求

    1.首先liferay要发送ajax请求,那么就需要在jsp中定义resourceURL <portlet:resourceURL var="workDeal" id=&qu ...

  9. Axios发送AJAX请求

    目录 Axios 特征 axios提供主要三种发起请求的方式 方式一:直接axios实例直接call方式 方式二:通过axios实例提供的不同http请求方式的方法 方式三:其实是从第二种方式中单独提 ...

随机推荐

  1. Java学习:JDBC各类详解

    JDBC各个类详解 代码实现: //1.导入驱动jar包 //2.注册驱动 Class.forName("com.mysql.jdbc.Driver"); //3.获取数据库连对象 ...

  2. Java学习:数组工具类Arrays

    数组工具类Arrays java.util.Arrays是一个与数组相关的工具类,里面提供了大量的静态方法,用来实现数组常见的操作. public static String toString(数组) ...

  3. golang学习笔记 ---interface

    1. 什么是interface接口 interface 是GO语言的基础特性之一.可以理解为一种类型的规范或者约定.它跟java,C# 不太一样,不需要显示说明实现了某个接口,它没有继承或子类或“im ...

  4. mybatis-plus 主键自增问题

    主键不自增:返回值是插入的条数 <insert id="add" parameterType="EStudent"> insert into TSt ...

  5. Mybatis+MySql 一个标签中执行多条sql语句

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/cxfly957/article/details/77896590 MySql默认是不支持这种骚操作的 ...

  6. php 逻辑题

    越长大约发现,高中学的数学,都还给了数学老师,一点都没有留住. 最近遇到了一个 逻辑题,然后想了半天,后来做出来了,我就发现了,我可能是一个假的理科生.很简单的样子. 废话不说,看看这道题吧. /** ...

  7. PHP清除数组中有字符串空格的方法

    清除数组中字符串有空格的方法函数 function TrimArray($arr){ if (!is_array($arr)){ return $arr; } while (list($key, $v ...

  8. CorelDRAW 学习笔记(一)

    基本图形 等比例图形:按住 Ctrl 拖拽 以中心为起点等比例缩放:按住 Shift 拖拽 快捷键: 矩形:F6 圆形:F7 多边形:Y 双击矩形工具,可以直接创建一个页面大小的矩形对象: 对象对齐 ...

  9. 配置 Log4j 以便查看 MyBatis 操作数据库的过程

    在 src/main/resources中添加 log4j.properties 配置文件 ,输入如下内 容.#全局面已直 log4j .rootLogger=ERROR, stdout #MyBat ...

  10. 2019 美柚java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.美柚等公司offer,岗位是Java后端开发,因为发展原因最终选择去了美柚,入职一年时间了,也成为了面试官,之 ...