JSON转FormData

写项目以来一直写请求都是直接丢个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("&")
}
时间: 2024-10-09 21:16:18

JSON转FormData的相关文章

Vue使用axios请求数据,默认post请求传参是json格式,但后台需要formData格式???

最简单的方式,post请求参数json转formData…代码如下: 使用node的 qs 模块(推荐使用) 就是这么简单,在结合element ui表单一键提交涉及到,希望遇到的同学少走弯路,加油~ 原文地址:https://www.cnblogs.com/lst619247/p/10879443.html

js将form表单转成json

<!DOCTYPE html> <head></head> <body> <form id="register"> <input type="text" name="user" value="hpc"><br> <input type="text" name="pwd" value="12

h5图片上传简易版(FileReader+FormData+ajax)

一.选择图片(input的file类型) <input type="file" id="inputImg"> 1. input的file类型会渲染为一个按钮和一段文字.点击按钮可打开文件选择窗口:file类型的input会有files属性,保存着文件的相关信息. 2. input.files是一个数组,由传入的file对象组成.每个file对象包含以下属性: lastModified:数值,表示最近一次修改时间的毫秒数: lastModifiedDate

json使用小结

json 使用小结 此篇仅仅为我遇到的问题. 环境SpringBoot 2.1.7 首先需要知道的是Springboot 默认使用的是Jackson,即使没有配置,@ResponseBody 即可.但是后期我发现,可以先导入 fastJson ,如果转换有问题的话,直接调用fastJson 即可看到问题.注意的是,会把null删除. 在此我罗列了几点使用 前端传输问题 后端接收数据问题 回传问题 如何判断自己哪里错了 dubug查看自己能否在后端接受 500,可以先用fastJson进行转换,看

2、微信小程序之弹幕的实现(无后台)

对弹幕功能主要利用环信来实现的,读者也许对环信这个东西很陌生,请先自行了解这环信再来看这文章. 环信开发文档:http://docs.easemob.com/im/400webimintegration/10webimintro 请大家看文档看WebIM这个模块,环信官网也提供了小程序的demo,建议读者先自行下载个demo.,了解环信的基础功能. 环信小程序demo下载地址:https://github.com/easemob/webim-weixin-xcx 弹幕功能主要是利用了聊天室来实现

窗口 - dialog - 与后端交互

与后端交互,一般需要提交表单数据,所以,这次渲染得dialog其实是一个<form> <form id="loginForm"> <table align="center"> <tr> <th align="right">用户名</th> <td> <input type="text" name="username"/

【温故而知新-Javascript】使用 Ajax(续)

1. 准备向服务器发送数据 Ajax 最常见的一大用途是向服务器发送数据.最典型的情况是从 客户端发送表单数据,即用户在form元素所含的各个 input 元素里输入的值.下面代码展示了一张简单的表单: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>基本表单</title> <style>

jsp文件上传

整理了一下jsp的上传下载,由客户端到服务端,包括一些常规的业务 一客户端 先看最基本的情况 1 在表单设置multipart/form-data,通过提交键把数据和附件一次性提交的.服务器更多的是对应这个例子. 但有以下问题 一般的Ajax无法把附件数据发过去 附件往往涉及比较多问题,比如上传需要时间(要有个进度),上传也有可能不成功等,上传需要校验的东西就比较多. 2于是就有把上传分开来自己执行的.上传项在浏览文件后就开始上传,其他表单数据在提交表单时再提交. 更详细地说是:上传在表单中有自

第三方登录接口

$rootScope.getTokenOther = function(formdata) { // console.log("getTokenOther formdata", formdata); MyServer.otherlogin(formdata, function(data) { console.log("otherlogin data", data); if (data.code == 'SUCCESS') { $rootScope.curUser =