JSON转FormData

2021-06-15 00:03

阅读:418

标签:一点   function   dex   比较   格式   null   []   自己   color   

写项目以来一直写请求都是直接丢个json数据,天真的以为所有的ajax就是传json数据就好。直到遇到不配合的后端非让我传给他formData格式的数据。还一度怪人家不懂的变通,一点都不智能。其实还是自己见的太少,菜鸟遇到问题就是比较容易急躁呀。

贴个json转formdata的代码段吧。

function 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("&")
}

 

JSON转FormData

标签:一点   function   dex   比较   格式   null   []   自己   color   

原文地址:http://www.cnblogs.com/JiangM8/p/7278293.html


评论


亲,登录后才可以留言!