向 FormData 中的现有键添加键:值

Posted

技术标签:

【中文标题】向 FormData 中的现有键添加键:值【英文标题】:Add a key:value to an existing key in FormData 【发布时间】:2021-02-16 05:39:30 【问题描述】:

我有一个包含以下字段的表单:标题、名称和描述。我想使用 API 提交表单值。我有一个将键值对添加到 FormData 变量的 jquery 代码:

formdata.append('description_text', jquery('#description').val())

这很好用,但是标题和名称字段是自定义字段,因此 JSON 结构是:


    "description_text": "sample description",
    "custom_fields": 
        "name": "Ned",
        "title": "Mr."
    

我尝试添加:

formdata.append('custom_fields', 'title': jquery('#title').val()) 

我得到了错误:

["field":"custom_fields","message":"Value set is of type String.It should be a/an key/value pair","code":"datatype_mismatch"]

您能告诉我如何解决吗?

【问题讨论】:

表单如何编码,URI 编码? (默认设置。)是否要将 JSON 作为 custom_fields 的值发送?服务器将如何通过从custom_fields 获取单个值并将其解析为 JSON 来处理此问题?或者通过获取离散的 custom_fields[name]custom_fields[title] 条目? 服务器期望数据以什么格式发送? FormData 设计用于发布 multipart/form-data 编码数据。这是服务器所期望的吗?通常,需要多部分数据的服务器将需要使用 php 样式命名约定表示的复杂数据结构。您似乎正在尝试发布一些多部分数据和 JSON 数据的混合。期望 JSON 的服务器通常期望整个内容是单个 JSON 文本。应该给服务器什么? 【参考方案1】:

您应该将custom_fields 作为 JSON 发送——也就是说,您的对象通过 stringify 转换为 JSON 字符串:

formdata.append('custom_fields', JSON.stringify('title': jquery('#title').val())) 

【讨论】:

以上是关于向 FormData 中的现有键添加键:值的主要内容,如果未能解决你的问题,请参考以下文章

如何向 qjsonobject 中的键添加多个值

使用 Visual Studio 数据库项目中的数据将外键约束添加到现有表

向PYTHON列表中的键添加值

向 Ruby 中的键添加多个值以及仅删除一个关联的值

遍历现有键并更新字典python

如何从字典列表中向现有键值对添加新的键值对?