javascript - 将 JSON 数组对象附加到 formdata
问题描述
我有一个名为联系人的 JSON 数组对象:
var contacts = [];
经过一些处理后的值contacts
如下:
[{ "Country":"country 1", "Phone":"123" },{ "Country":"country 2", "Phone":"456" }]
现在我想将它添加到表单数据中的“联系人”名称中。为此,我使用:
var formdata = new FormData();
formdata.append("Contacts", JSON.stringify(contacts));
当我尝试alert(JSON.stringify(formdata));
单击按钮时,我得到:
\"Contacts\":\"[{\\\"Country\\\":\\\"country 1\\\",\\\"Phone\\\":\\\"123\\\"},
{\\\"Country\\\":\\\"country 2\\\",\\\"Phone\\\":\\\"456\\\"}]\"}"
问题是在 API 中,它没有检测到联系人列表。我尝试使用 POSTMAN 作为:
Contacts[0].Country : country 1
Contacts[0].Phone : 123
Contacts[1].Country : country 2
Contacts[1].Phone : 456
API 在这种情况下接受数据。API 接受除此之外的其余 formdata 字段,仅共享此信息以排除 api 问题。
API 接受联系人集合以及姓名、年龄和联系人等其他字段。
解决方案
如果您的 API 接受该格式的数据,则不能将其作为 JSON 发送,您需要为FormData
您提到的每一行创建一个单独的条目。
例如
const contacts = [{ "Country":"country 1", "Phone":"123" },{ "Country":"country 2", "Phone":"456" }];
var formdata = new FormData();
// This could be made fancier but it explains how to fix the problem
for (let i=0; i < contacts.length; i++) {
formdata.append(`Contacts[${i}].Country`, contacts[i].Country);
formdata.append(`Contacts[${i}].Phone`, contacts[i].Phone);
}
请注意,json-form-data为您完成
const data = {
Contacts: [{
"Country": "country 1",
"Phone": "123"
}, {
"Country": "country 2",
"Phone": "456"
}]
};
const formData = jsonToFormData(data);
for (const [key,value] of formData.entries()) {
console.log(`${key}: ${value}`);
}
<script src="https://unpkg.com/json-form-data@^1.7.0/dist/jsonToFormData.min.js"></script>
推荐阅读
- php - 在 Symfony 4 和 FOSRestBundle 下限制登录尝试
- flutter - Flutter Watson 助手集成
- wordpress - Docker Wordpress 站点中的 URL 问题
- python - How to find data type error in pandas dataframe?
- sql - 仅列出重复的名称
- html - chrome 无法将本地 css 用于简单的本地站点
- javascript - Javascript assign a class that doesn't exist to a variable
- azure-logic-apps - 在 Javascript 中用双引号嵌套替换字符串 - 第 2 部分
- python - Pandas prints out each dataframe cell's corresponding indexes
- javascript - 为什么我的 HTML 文件无法使用我已链接的 JavaScript 文件?