一、 简介

  1、vue本身不支持发送AJAX请求,需要使用vue-resource(vue1.0版本)、axios(vue2.0版本)等插件实现

  2、axios是一个基于Promise的HTTP请求客户端,用来发送请求,也是vue2.0官方推荐的,同时不再对vue-resource进行更新和维护

  3、参考:GitHub上搜索axios,查看API文档

二、 使用axios发送AJAX请求

  1、安装axios并引入

     1、npm install axios -S        #直接下载axios组件,下载完毕后axios.js就存放在node_modules\axios\dist中

     2、网上直接下载axios.min.js文件

     3、通过script src的方式进行文件的引入

  2、发送get请求

    1、基本使用格式

      格式1:axios([options])        #这种格式直接将所有数据写在options里,options其实是个字典

      格式2:axios.get(url[,options]);

    2、传参方式:
                通过url传参
                  通过params选项传参

    3、案例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>发送AJAX请求</title><script src="js/vue.js"></script><script src="js/axios.min.js"></script><script>window.onload=function(){new Vue({el:'#itany',data:{user:{name:'alice',age:19},},methods:{send(){axios({method:'get',url:'http://www.baidu.com?name=tom&age=23'}).then(function(resp){console.log(resp.data);}).catch(resp => {console.log('请求失败:'+resp.status+','+resp.statusText);});},sendGet(){axios.get('server.php',{params:{name:'alice',age:19}}).then(resp => {console.log(resp.data);}).catch(err => {             //
                            console.log('请求失败:'+err.status+','+err.statusText);});},}});}</script>
</head>
<body><div id="itany"><button @click="send">发送AJAX请求</button><button @click="sendGet">GET方式发送AJAX请求</button></div>
</body>
</html>

View Code

3、发送post请求(push,delete的非get方式的请求都一样)

    1、基本使用格式

      格式:axios.post(url,data,[options]);

    2、传参方式

      1、自己拼接为键值对

      2、使用transformRequest,在请求发送前将请求数据进行转换

      3、如果使用模块化开发,可以使用qs模块进行转换

      4、注释:axios默认发送post数据时,数据格式是Request Payload,并非我们常用的Form Data格式,所以参数必须要以键值对形式传递,不能以json形式传参

    3、案例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>发送AJAX请求</title><script src="js/vue.js"></script><script src="js/axios.min.js"></script><script>window.onload=function(){new Vue({el:'#itany',data:{user:{name:'alice',age:19},},methods:{sendPost(){// axios.post('server.php',{//         name:'alice',//         age:19// }) //该方式发送数据是一个Request Payload的数据格式,一般的数据格式是Form Data格式,所有发送不出去数据// axios.post('server.php','name=alice&age=20&') //方式1通过字符串的方式发送数据
                        axios.post('server.php',this.user,{  //方式2通过transformRequest方法发送数据,本质还是将数据拼接成字符串
                            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>
</head>
<body><div id="itany"><button @click="send">发送AJAX请求</button><button @click="sendGet">GET方式发送AJAX请求</button></div>
</body>
</html>

View Code

4、发送跨域请求
         1、须知:axios本身并不支持发送跨域的请求,没有提供相应的API,作者也暂没计划在axios添加支持发送跨域请求,所以只能使用第三方库

    2、使用vue-resource发送跨域请求

    3、 安装vue-resource并引入

       npm info vue-resource           #查看vue-resource 版本信息
          cnpm install vue-resource -S #等同于cnpm install vue-resource -save

    4、 基本使用方法(使用this.$http发送请求)

       this.$http.get(url, [options])

       this.$http.head(url, [options])

       this.$http.delete(url, [options])

      this.$http.jsonp(url, [options])

       this.$http.post(url, [body], [options])

      this.$http.put(url, [body], [options])

      this.$http.patch(url, [body], [options])

    5、案例

基本发送方式1

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="x-ua-compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>发送AJAX请求</title><script src="js/vue.js"></script><script src="js/axios.js"></script><script src="js/vue-resource.js"></script>
</head><body>
<div id="itany"><a>{{name}}</a><button v-on:click="send">sendJSONP</button></div>
</body>
<script>new Vue({el: '#itany',data:{name: 'alice',age: 19},methods:{send:function(){
//                https://sug.so.360.cn/suggest?callback=suggest_so&encodein=utf-8&encodeout=utf-8&format=json&fields=word&word=athis.$http.jsonp('https://sug.so.360.cn/suggest',{params:{word:'a'}}).then(function (resp) {console.log(resp.data)})}}})
</script>
</html>

View Code

基本发送方式2

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="x-ua-compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>发送AJAX请求</title><script src="js/vue.js"></script><script src="js/axios.js"></script><script src="js/vue-resource.js"></script>
</head><body>
<div id="itany"><a>{{name}}</a><button v-on:click="send">sendJSONP</button></div>
</body>
<script>new Vue({el: '#itany',data:{name: 'alice',age: 19},methods:{send:function(){
//                https://sug.so.360.cn/suggest?callback=suggest_so&encodein=utf-8&encodeout=utf-8&format=json&fields=word&word=athis.$http.jsonp('https://sug.so.360.cn/suggest',{params:{word:'a'}}).then(resp=> {console.log(resp.data)})}}})
</script>
</html>

View Code

带jsonp参数方式

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="x-ua-compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>发送AJAX请求</title><script src="js/vue.js"></script><script src="js/axios.js"></script><script src="js/vue-resource.js"></script>
</head>
<body>
<div id="itany"><button v-on:click="send">向百度搜索发送JSONP请求</button>
</div>
</body>
<script>new Vue({el:'#itany',data:{name:'za'},methods:{send:function () {this.$http.jsonp('https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su',{params:{wd:'a'},jsonp:'cb', //百度使用的jsonp参数名为cb,所以需要修改,默认使用的是callbakc参数就不用修改
                    }).then(function (resp) {console.log(resp.data)}).catch(function (err) {console.log(err)})}}})
</script>
</html>

View Code

vue 发送ajax请求相关推荐

  1. Vue之axios发送Ajax请求

    2.10 axios发送ajax请求 axios github 2.10.1 准备工程 创建一个django工程,例如 login.创建完成之后,再创建一个子应用,例如users.最后再设置一下模板文 ...

  2. promise的应用和在VUE中使用axios发送AJAX请求服务器

    promise 用promise对函数封装: 原来的代码: <!DOCTYPE html> <html> <head><title>vue demo&l ...

  3. 六十五、vue生命周期和发送Ajax请求

    vue生命周期和发送Ajax请求 一 vue生命周期介绍 二 vue生命周期钩子函数 三 测试 三 发送Ajax请求 四 计算属性 五 监听属性 一 vue生命周期介绍 每个 Vue 实例在被创建时都 ...

  4. 二、Vue(发送AJAX请求、Vue生命周期、计算属性、属性和方法、自定义指令、过渡(动画))

    一. 发送AJAX请求 1. 简介     vue本身不支持发送AJAX请求,需要使用vue-resource.axios等插件实现     axios是一个基于Promise的HTTP请求客户端,用 ...

  5. 使用rest_framework写api接口的一些注意事项(axios发送ajax请求)

    1. 类继承GenericAPIView,定义queryset 印象深刻的事: 由于原来对于继承关系不太清楚,写接口 APIView/泛指GenericAPIView不太关注queryset 没有设置 ...

  6. tab 触发ajax请求,防止重复发送ajax请求的思索

    原标题:防止重复发送ajax请求的思索 防止重复发ajax请求是平时开发中遇到频次较高的问题了.我通常解决方案有如下几种, 1.UI限制 点击完按钮后,就禁用按钮, 并开启显示等待动画,收到服务器的成 ...

  7. 发起一个ajax请求,发送ajax请求

    发送ajax请求 vue本身不支持发送ajax请求,需要使用vue-resourc axios等插件实现,建议使用axios axios是一个基于promise的http请求客户端,用来发送请求 基本 ...

  8. Vuejs发送Ajax请求

    一.概况 ①vuejs中没有内置任何ajax请求方法 ②在vue1.0版本,使用的插件 vue resource 来发送请求,支持promise ③在vue2.0版本,使用社区的一个第三方库 axio ...

  9. React基础-React中发送Ajax请求以及Mock数据

    前言 在 React 中, render 函数返回的结果,取决于组件的 props 和 state 我们都知道 UI 页面上的数据不是写死的,往往是从后端的数据接口中拿到的 然后将真实的数据填充到页面 ...

最新文章

  1. XR应用场景骤变,一场波及5亿人的新探索开始了
  2. 程序员版本管理知识 Git 详细整理
  3. python引入jit_从numba导入jit
  4. HIVE大数据出现倾斜怎么办
  5. php读取mssql中文乱码,PHP读取mssql json数据中文乱码的解决办法
  6. 获取系统联系人添加系统联系人
  7. python运维脚本面试_参加Linux运维面试时经常会被问到的shell脚本问题有哪些?
  8. python ppt自动生成目录_利用python-pptx库读写操作PPT,批量自动生成或修改的PPT
  9. ubuntu 安装 TM2009 QQ2013
  10. 霍尼韦尔和陕西西咸新区签订投资战略协议;雀巢专业餐饮成都客户交流体验中心落成 | 美通企业日报...
  11. matlab 轴系校中,轴系校中简介.ppt
  12. PHPStorm 安装说明
  13. ELK搭建毫秒级响应社工裤
  14. OD 的 Run Trace
  15. AlarmManager介绍
  16. 超硬核!史上最好的数据库总结
  17. 13台根服务器位置,根服务器13台地址
  18. 易语言通过进程名称获取进程ID
  19. 中国信通院魏博锴:云原生混部标准解读
  20. 平面设计配色全攻略,不看你将错过1个亿!

热门文章

  1. QT之error: cannot bind non-const lvalue reference of type ‘CBaowen’ to an rvalue of type ‘CBaowen
  2. [C++ STL] 各容器简单介绍
  3. constexpr函数
  4. rust安装教程linux,如何在 Linux 中安装 Rust 编程语言
  5. mysql select查询2个表_mysql – 为SELECT查询合并2个表?
  6. JAVA操作HDFS API(hadoop)
  7. Oracle -jdbc-java 的类型映射
  8. Clojure入门教程: Clojure – Functional Programming for the JVM中文版
  9. oracle Hint 使用
  10. IDEA创建多个模块MavenSpringBoot项目