VUE 更好的 ajax 上传处理 axios.js实现代码


Posted in Javascript onMay 10, 2017

vue更新到2.0之后,作者就宣告不再对vue-resource更新,而是推荐的axios,前一段时间用了一下,现在说一下它的基本用法。

首先就是引入axios,如果你使用es6,只需要安装axios模块之后

import axios from 'axios';
//安装方法
npm install axios
//或
bower install axios

当然也可以用script引入

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

axios提供了一下几种请求方式

axios.request(config)

axios.get(url[, config])

axios.delete(url[, config])

axios.head(url[, config])

axios.post(url[, data[, config]])

axios.put(url[, data[, config]])

axios.patch(url[, data[, config]])

这里的config是对一些基本信息的配置,比如请求头,baseURL,当然这里提供了一些比较方便配置项

//config
import Qs from 'qs'
{
 //请求的接口,在请求的时候,如axios.get(url,config);这里的url会覆盖掉config中的url
 url: '/user',

 // 请求方法同上
 method: 'get', // default
 // 基础url前缀
 baseURL: 'https://some-domain.com/api/',




 transformRequest: [function (data) {
  // 这里可以在发送请求之前对请求数据做处理,比如form-data格式化等,这里可以使用开头引入的Qs(这个模块在安装axios的时候就已经安装了,不需要另外安装)

data = Qs.stringify({});
  return data;
 }],

 transformResponse: [function (data) {
  // 这里提前处理返回的数据

  return data;
 }],

 // 请求头信息
 headers: {'X-Requested-With': 'XMLHttpRequest'},

 //parameter参数
 params: {
  ID: 12345
 },

 //post参数,使用axios.post(url,{},config);如果没有额外的也必须要用一个空对象,否则会报错
 data: {
  firstName: 'Fred'
 },

 //设置超时时间
 timeout: 1000,
 //返回数据类型
 responseType: 'json', // default


}

有了配置文件,我们就可以减少很多额外的处理代码也更优美,直接使用

axios.post(url,{},config)
  .then(function(res){
    console.log(res);
  })
  .catch(function(err){
    console.log(err);
  })
//axios请求返回的也是一个promise,跟踪错误只需要在最后加一个catch就可以了。
//下面是关于同时发起多个请求时的处理

axios.all([get1(), get2()])
 .then(axios.spread(function (res1, res2) {
  // 只有两个请求都完成才会成功,否则会被catch捕获
 }));

最后还是说一下配置项,上面讲的是额外配置,如果你不想另外写也可以直接配置全局

axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

//当然还可以这么配置
var instance = axios.create({
 baseURL: 'https://api.example.com'
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript &amp; DHTML 实例编程(教程)DOM基础和基本API
Jun 02 Javascript
ext 列表页面关于多行查询的办法
Mar 25 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
Dec 17 Javascript
Extjs4 GridPanel 的几种样式使用介绍
Apr 18 Javascript
javascript图片相似度算法实现 js实现直方图和向量算法
Jan 14 Javascript
JQuery弹出层示例可自定义
May 19 Javascript
JS处理json日期格式化问题
Oct 01 Javascript
Jquery中request和request.form和request.querystring的区别
Nov 26 Javascript
jQuery fadeOut 异步实例代码详解
Aug 18 Javascript
JS实现图片放大缩小的方法
Feb 15 Javascript
基于滚动条位置判断的简单实例
Dec 14 Javascript
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
Feb 21 Javascript
vuejs2.0子组件改变父组件的数据实例
May 10 #Javascript
详解vue.js2.0父组件点击触发子组件方法
May 10 #Javascript
详解vue-router 2.0 常用基础知识点之router-link
May 10 #Javascript
JavaScript使用readAsDataURL读取图像文件
May 10 #Javascript
angular.js指令中的controller、compile与link函数的不同之处
May 10 #Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
May 10 #Javascript
详解vue-router 2.0 常用基础知识点之router.push()
May 10 #Javascript
You might like
PHP中使用hidef扩展代替define提高性能
2015/04/09 PHP
thinkphp 手机号和用户名同时登录
2017/01/20 PHP
使用PHPWord生成word文档的方法详解
2019/06/06 PHP
redis+php实现微博(二)发布与关注功能详解
2019/09/23 PHP
刷新时清空文本框内容的js代码
2007/04/23 Javascript
Javascript &amp; DHTML 实例编程(教程)基础知识
2007/06/02 Javascript
javascript闭包的理解和实例
2010/08/12 Javascript
ExtJS4 组件化编程,动态加载,面向对象,Direct
2011/05/12 Javascript
js处理表格对table进行修饰
2014/05/26 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
Javascript writable特性介绍
2015/02/27 Javascript
js实现可折叠展开的手风琴菜单效果
2015/09/07 Javascript
几种经典排序算法的JS实现方法
2016/03/25 Javascript
聊聊Vue.js的template编译的问题
2017/10/09 Javascript
基于JavaScript 性能优化技巧心得(分享)
2017/12/11 Javascript
JavaScript实现写入文件到本地的方法【基于FileSaver.js插件】
2018/03/15 Javascript
JS实现调用本地摄像头功能示例
2018/05/18 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
2019/03/31 Javascript
vue中watch和computed为什么能监听到数据的改变以及不同之处
2019/12/27 Javascript
原生js实现购物车功能
2020/09/23 Javascript
Python使用Beautiful Soup包编写爬虫时的一些关键点
2016/01/20 Python
Python中使用asyncio 封装文件读写
2016/09/11 Python
Python虚拟环境virtualenv的安装与使用详解
2017/05/28 Python
python模糊图片过滤的方法
2018/12/14 Python
python制作mysql数据迁移脚本
2019/01/01 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
django中上传图片分页三级联动效果的实现代码
2019/08/30 Python
python os.rename实例用法详解
2020/12/06 Python
大唐面试试题(CPU,UNIX等等)
2012/01/11 面试题
写给女朋友的道歉信
2014/01/08 职场文书
物流专业专科生职业生涯规划书
2014/09/14 职场文书
招商引资工作汇报材料
2014/10/28 职场文书
2016年清明节网上祭英烈活动总结
2016/04/01 职场文书
opencv深入浅出了解机器学习和深度学习
2022/03/17 Python
Python+OpenCV实现在图像上绘制矩形
2022/03/21 Python
MySQL Server 层四个日志
2022/03/31 MySQL