JSON转FormData
2021-06-15 00:03
标签:一点 function dex 比较 格式 null [] 自己 color 写项目以来一直写请求都是直接丢个json数据,天真的以为所有的ajax就是传json数据就好。直到遇到不配合的后端非让我传给他formData格式的数据。还一度怪人家不懂的变通,一点都不智能。其实还是自己见的太少,菜鸟遇到问题就是比较容易急躁呀。 贴个json转formdata的代码段吧。 JSON转FormData 标签:一点 function dex 比较 格式 null [] 自己 color 原文地址:http://www.cnblogs.com/JiangM8/p/7278293.htmlfunction isObject(value) {
return value === Object(value)
}
function isArray(value) {
return Array.isArray(value)
}
function makeArrayKey(key) {
if (key.length > 2 && key.lastIndexOf(‘[]‘) === key.length - 2) {
return key
} else {
return key + ‘[]‘
}
}
/**
* 格式化
* @param {*} obj
* @param {*} resultArr
* @param {*} pre
*/
function objectToFormData(obj, resultArr, pre) {
resultArr = resultArr || []
Object.keys(obj).forEach(function (prop) {
var key = pre ? (pre + ‘.‘ + prop) : prop
if (isObject(obj[prop]) && !isArray(obj[prop])) {
objectToFormData(obj[prop], resultArr, key)
} else if (isArray(obj[prop])) {
obj[prop].forEach(function (value, i) {
var arrayKey = key + ‘[‘ + i + ‘]‘;
if (isObject(value)) {
objectToFormData(value, resultArr, arrayKey)
} else {
resultArr.push(arrayKey + "=" + value)
}
})
} else {
(obj[prop]!==""&&obj[prop]!==null) ? resultArr.push(key + "=" + obj[prop]) : null
}
})
return resultArr.join("&")
}