Javascript 将JSON数组对象追加到formdata

Javascript 将JSON数组对象追加到formdata,javascript,jquery,json,api,Javascript,Jquery,Json,Api,我有一个名为contacts的JSON数组对象: var contacts = []; 经过一些处理后,联系人的值如下所示: [{“国家”:“国家1”,“电话”:“123”},{“国家”:“国家2”,“电话”:“456”}] 现在,我想将其添加到formdata中的“联系人”名称中。为此,我使用: var formdata = new FormData(); formdata.append("Contacts", JSON.stringify(contacts)); 当

我有一个名为contacts的JSON数组对象:

var contacts = [];
经过一些处理后,
联系人的值如下所示:

[{“国家”:“国家1”,“电话”:“123”},{“国家”:“国家2”,“电话”:“456”}]

现在,我想将其添加到formdata中的“联系人”名称中。为此,我使用:

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中,它没有检测联系人列表。 我试着使用邮递员作为:

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);
}

您似乎没有按照API的预期发送数据,但您没有向我们提供有关API接受什么的详细信息。此外,您已经证明formdata对象具有所需的所有信息,因此它可能不是问题的根源。现在将添加引用。谢谢:)提示:
console.log()
而不是
alert()
@tadman为什么?它似乎显示了正确的数据?什么“API”?你需要告诉我们更多关于它在做什么,它期望什么,最重要的是,你是如何发送的。@Neo注意,我在最初的实现中修复了一个bug谢谢你。但我只是担心为什么标准的代码实践对我不起作用:(我不理解这个问题,它不起作用是因为您的API不支持联系人数据的JSON,它需要这种表单数据编码样式。请注意,有一个包可以为您做到这一点