import axios from ‘axios‘;

import alert from ‘./alert.js‘;

import Qs from ‘qs‘ //引入qs 时axios的自带模块

let env = process.env.NODE_ENV;

let root = ‘‘;

if (env === ‘development‘) {

console.log("api");

} else if (env === ‘production‘) {

console.log("pro");

root = ‘‘;

} else {

throw ‘请检查process.env.NODE_ENV的值,是否符合这些值之一:development,production‘;

}

Date.prototype.format = function (fmt) {

var o = {

"y+": this.getFullYear(),

"M+": this.getMonth() + 1, //月份

"d+": this.getDate(), //日

"H+": this.getHours(), //小时

"m+": this.getMinutes(), //分

"s+": this.getSeconds() //秒

};

if (!fmt) {

fmt = ‘yyyy-MM-dd HH:mm:ss‘;

}

if (/(y+)/.test(fmt))

fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));

for (var k in o) {

if (new RegExp("(" + k + ")").test(fmt)) {

fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));

}

}

return fmt;

}

// 自定义判断元素类型JS

function toType(obj) {

return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();

}

// 参数过滤函数

function filterNull(o) {

for (var key in o) {

if (o[key] === null) {

delete o[key];

}

if (toType(o[key]) === ‘string‘) {

o[key] = o[key].trim();

} else if (toType(o[key]) === ‘date‘) {

o[key] = (o[key].format());

} else if (toType(o[key]) === ‘object‘) {

o[key] = filterNull(o[key]);

} else if (toType(o[key]) === ‘array‘) {

o[key] = filterNull(o[key]);

}

}

return o;

}

function apiAxios(method, url, params, success, failure, authFail) {

console.log(‘url:‘ + url);

if (params) {

params = filterNull(params);

}

var base = "";

if (url.indexOf(".html") != -1) {

base = "";

} else {

base = root;

}

axios({

headers: {

‘Content-Type‘: ‘application/x-www-form-urlencoded; charset=UTF-8‘

},

transformRequest: [function(data) {//在请求之前对data传参进行格式转换

data = Qs.stringify(data)

return data

}],

method: method,

url: url,

data: method === ‘POST‘ || method === ‘PUT‘ || method === ‘DELETE‘ ? params : null,

params: method === ‘GET‘ ? params : null,

baseURL: base,

withCredentials: true

}).then(function (res) {

if (res.status >= 200 && res.status<= 210) {

if (success) {

success(res);

}

} else {

//不走

// window.alert(‘error: ‘ + JSON.stringify(res.data));

}

}).catch(function (err) {

let res= err.response;if (err && res) {

console.log(res.status);

if (res.status==504) {

alert.eduToast("服务器连接失败!请检查您的网络或服务器!!",2000);

return;

} else if (res.status==401) {

console.log(‘------------------:status‘+res.status);

console.log(‘------------------:authFail‘+authFail);

}

if (failure) {

failure(res);

} else {

alert.eduToast(res.data,2000);

}

} else {

if(authFail){

// localStorage.setItem(‘login‘, ‘‘);

}else{

console.log(err);

}

}

});

}

// 返回在vue模板中的调用接口

export default {

get: function (url, params, success, failure,authFail) {

return apiAxios(‘GET‘, url, params, success, failure,authFail);

},

post: function (url, params, success, failure) {

return apiAxios(‘POST‘, url, params, success, failure);

},

put: function (url, params, success, failure) {

return apiAxios(‘PUT‘, url, params, success, failure);

},

delete: function (url, params, success, failure) {

return apiAxios(‘DELETE‘, url, params, success, failure);

},

initHeader: function () {

console.log(‘------------------:initHeader‘);

}

};

axios post传递对象_axios的post传参时,将参数转为form表单格式相关推荐

  1. 【debug】使用lambda在循环中传参时,参数总为同一个值

    发现问题: 当我使用PyQt5在写一个文本处理小工具时,需要在调用事件时传入参数,于是想到了lambda函数,代码如下: def radiotext(self):'''文档输出格式选择功能'''# 自 ...

  2. 解决在Vue中使用axios用form表单出现的问题

    vue中使用Axios第三方库,采用形式提交,参数格式为multipart /格式数据 ,请求参数变为对象格式的解决办法.(推荐第二种方法) 提交数据的四种编码方式 一,应用/ X WWW的窗体-ur ...

  3. C/C++语言传参、返回参数知识点讲解

    在我们编写程序时,大多数情况下都是函数传参,接收返回参数,但这中间有一定的操作系统内存传递原理,当你看完这篇文章你会发现,噢!原来这样使用会出错之类的感想! 最简单的,函数现场保护,通常操作系统会使用 ...

  4. form表单文件上传

    form表单文件上传 form表单文件上传的ajax方法与文本上传有一些不一样 首先form表单的enctype属性写为**"multipart/form-data"** 默认是a ...

  5. axios 上传文件 封装_axios封装和传参

    axios封装和传参 1.开发环境 vue+typescript 2.电脑系统 windows10专业版 3.在开发的过程中,我们会经常使用到 axios进行数据的交互,下面我来说一下,axios封装 ...

  6. Ajax(form表单文件上传、请求头之contentType、Ajax传递json数据、Ajax文件上传)

    form表单文件上传 上菜 file_put.html <form action="" method="post" enctype="multi ...

  7. JS函数传参时:值传递与引用传递的区别

    JS函数传参时:值传递与引用传递的区别 一.先分析基础数据与复杂数据的区别 : 基本数据类型:Undefined.Null.Boolean.Number.String 引用数据类型:对象 如:var ...

  8. 论JS函数传参时:值传递与引用传递的区别

    JS函数传参时:值传递与引用传递的区别? 值传递:值传递的数据为基本数据类型,基本数据类型在内存中存放的是数值本身:值传递为单向传递,只能由实参传递给形参. 引用传递:引用传递的数据为复杂数据类型,复 ...

  9. 小程序 url 对象转字符串编码传参 url 字符串转对象解码接收参数

    url 对象转字符串编码传参 let info = encodeURI(JSON.stringify(this.data.info));wx.navigateTo({url: '/pages/part ...

最新文章

  1. 自编网页是处理url时服务器出错,【上海校区】自编教材《web标准网页制作实例教程》连载...
  2. Flex数据绑定陷阱(一)
  3. leetcode 最后一个单词的长度
  4. SpringCloud微服务架构,Config 分布式配置中心,Bus 消息总线, Stream 消息驱动,Sleuth+Zipkin 链路追踪
  5. android sharedpreferences 工具类,android sharedpreferences工具类
  6. 盲僧一键r闪用什么设置_美加狮R.A.T. PRO X3至尊版带你畅玩模拟飞行
  7. 使用markdown语法记录笔记 1613957838
  8. 矩阵的四个基本子空间
  9. 边缘设备上的实时AI人员检测:选择深度学习模型
  10. 【Qt串口调试助手】1.4 - 16进制接收/发送
  11. Android源码中常用的系统广播
  12. html保护眼睛背景色,保护眼睛的颜色和各种背景颜色设置方法
  13. http下载文件(常用方式+支持在线打开方式)
  14. ANSYS入门——模态分析步骤与实例详解
  15. 从腾讯云迁移到腾讯云,开心消消乐的云端迁移战事
  16. 未充分说明劳务采购价格公允性、供应商合作合理性,电旗股份IPO被否.
  17. 南非认证_南非2008-避免或尽量减少时差
  18. html5两个标签重叠,css中两个盒子如何重叠?
  19. 【Dlib人脸识别】1. Dlib人脸检测的基本原理
  20. 【译】LiveData三连

热门文章

  1. 【Scala谜题】继承
  2. linux ssh 报错failed - POSSIBLE BREAK-IN ATTEMPT
  3. 关于Oracle回收站的一些操作
  4. Pascal's Triangle 2(leetcode java)
  5. 关于vs2012、tfs2012、windows server 2008r2一些记录
  6. 获取Spring中的bean,使得线程安全性得到保障
  7. 多代理集群调度:可伸缩性和灵活性
  8. PHP 设计模式之策略模式
  9. java 对象重写tostring
  10. rhel7+apache+c cgi+动态域名实现web访问