axios post传递对象_axios的post传参时,将参数转为form表单格式
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表单格式相关推荐
- 【debug】使用lambda在循环中传参时,参数总为同一个值
发现问题: 当我使用PyQt5在写一个文本处理小工具时,需要在调用事件时传入参数,于是想到了lambda函数,代码如下: def radiotext(self):'''文档输出格式选择功能'''# 自 ...
- 解决在Vue中使用axios用form表单出现的问题
vue中使用Axios第三方库,采用形式提交,参数格式为multipart /格式数据 ,请求参数变为对象格式的解决办法.(推荐第二种方法) 提交数据的四种编码方式 一,应用/ X WWW的窗体-ur ...
- C/C++语言传参、返回参数知识点讲解
在我们编写程序时,大多数情况下都是函数传参,接收返回参数,但这中间有一定的操作系统内存传递原理,当你看完这篇文章你会发现,噢!原来这样使用会出错之类的感想! 最简单的,函数现场保护,通常操作系统会使用 ...
- form表单文件上传
form表单文件上传 form表单文件上传的ajax方法与文本上传有一些不一样 首先form表单的enctype属性写为**"multipart/form-data"** 默认是a ...
- axios 上传文件 封装_axios封装和传参
axios封装和传参 1.开发环境 vue+typescript 2.电脑系统 windows10专业版 3.在开发的过程中,我们会经常使用到 axios进行数据的交互,下面我来说一下,axios封装 ...
- Ajax(form表单文件上传、请求头之contentType、Ajax传递json数据、Ajax文件上传)
form表单文件上传 上菜 file_put.html <form action="" method="post" enctype="multi ...
- JS函数传参时:值传递与引用传递的区别
JS函数传参时:值传递与引用传递的区别 一.先分析基础数据与复杂数据的区别 : 基本数据类型:Undefined.Null.Boolean.Number.String 引用数据类型:对象 如:var ...
- 论JS函数传参时:值传递与引用传递的区别
JS函数传参时:值传递与引用传递的区别? 值传递:值传递的数据为基本数据类型,基本数据类型在内存中存放的是数值本身:值传递为单向传递,只能由实参传递给形参. 引用传递:引用传递的数据为复杂数据类型,复 ...
- 小程序 url 对象转字符串编码传参 url 字符串转对象解码接收参数
url 对象转字符串编码传参 let info = encodeURI(JSON.stringify(this.data.info));wx.navigateTo({url: '/pages/part ...
最新文章
- 自编网页是处理url时服务器出错,【上海校区】自编教材《web标准网页制作实例教程》连载...
- Flex数据绑定陷阱(一)
- leetcode 最后一个单词的长度
- SpringCloud微服务架构,Config 分布式配置中心,Bus 消息总线, Stream 消息驱动,Sleuth+Zipkin 链路追踪
- android sharedpreferences 工具类,android sharedpreferences工具类
- 盲僧一键r闪用什么设置_美加狮R.A.T. PRO X3至尊版带你畅玩模拟飞行
- 使用markdown语法记录笔记 1613957838
- 矩阵的四个基本子空间
- 边缘设备上的实时AI人员检测:选择深度学习模型
- 【Qt串口调试助手】1.4 - 16进制接收/发送
- Android源码中常用的系统广播
- html保护眼睛背景色,保护眼睛的颜色和各种背景颜色设置方法
- http下载文件(常用方式+支持在线打开方式)
- ANSYS入门——模态分析步骤与实例详解
- 从腾讯云迁移到腾讯云,开心消消乐的云端迁移战事
- 未充分说明劳务采购价格公允性、供应商合作合理性,电旗股份IPO被否.
- 南非认证_南非2008-避免或尽量减少时差
- html5两个标签重叠,css中两个盒子如何重叠?
- 【Dlib人脸识别】1. Dlib人脸检测的基本原理
- 【译】LiveData三连