向 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 中的现有键添加键:值的主要内容,如果未能解决你的问题,请参考以下文章