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 相关文章推荐
JS 用6N±1法求素数 实例教程
Oct 20 Javascript
Jquery数字上下滚动动态切换插件
Aug 08 Javascript
页面内容排序插件jSort使用方法
Oct 10 Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
Dec 04 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
Apr 14 Javascript
jQuery Chosen通用初始化
Mar 07 Javascript
Angular2 之 路由与导航详细介绍
May 26 Javascript
防止页面url缓存中ajax中post请求的处理方法
Oct 10 Javascript
vue实现未登录跳转到登录页面的方法
Jul 17 Javascript
微信小程序实现搜索历史功能
Mar 26 Javascript
layui radio点击事件实现input显示和隐藏的例子
Sep 02 Javascript
vue实现带过渡效果的下拉菜单功能
Feb 19 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写出自己的BLOG系统 2
2010/04/12 PHP
PHP中strtotime函数使用方法分享
2012/01/10 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
2014/06/12 PHP
PHPStorm 2020.1 调试 Nodejs的多种方法详解
2020/09/17 NodeJs
模仿JQuery.extend函数扩展自己对象的js代码
2009/12/09 Javascript
基于jQuery的倒计时插件代码
2011/05/07 Javascript
js面向对象 多种创建对象方法小结
2012/05/21 Javascript
node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用
2014/11/04 Javascript
jQuery使用zTree插件实现树形菜单和异步加载
2016/02/25 Javascript
js带闹铃功能的倒计时代码
2016/09/29 Javascript
bootstrapValidator自定验证方法写法
2016/12/01 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
JS实现的DOM插入节点操作示例
2018/04/04 Javascript
详解vue添加删除元素的方法
2018/06/30 Javascript
vue 表单验证按钮事件交由父组件触发的方法
2018/12/17 Javascript
layui的数据表格+springmvc实现搜索功能的例子
2019/09/28 Javascript
JavaScript语法约定和程序调试原理解析
2020/11/03 Javascript
[31:29]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第一场 12.20
2020/12/23 DOTA
python实现的防DDoS脚本
2011/02/08 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
Python实现简单的多任务mysql转xml的方法
2017/02/08 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
python中scipy.stats产生随机数实例讲解
2021/02/19 Python
html5页面结构_动力节点Java学院整理
2017/07/10 HTML / CSS
美国市场上最实惠的送餐服务:Dinnerly
2018/03/18 全球购物
法国一家多品牌成衣精品中/高档商店:Graduate Store
2019/08/28 全球购物
试述DBMS的主要功能
2016/11/13 面试题
什么是静态路由?什么是动态路由?各自的特点是什么?
2015/09/16 面试题
经典演讲稿汇总
2014/05/19 职场文书
2015年教研工作总结
2015/05/23 职场文书
2016年5月份红领巾广播稿
2015/12/21 职场文书
来探秘“德国中小企业”的成功之道
2019/07/26 职场文书
《孙子兵法》:欲成大事者,需读懂这些致胜策略
2019/08/23 职场文书
Python数据清洗工具之Numpy的基本操作
2021/04/22 Python
SQL实现LeetCode(175.联合两表)
2021/08/04 MySQL