我有这个遗留的C#代码(我不知道C#),我需要用Javascript编写相同的功能(我非常了解JS)。因此,C#代码为:
static JavaScriptSerializer serializer = new JavaScriptSerializer();
MultipartFormDataContent content = new MultipartFormDataContent();
item item_1 = new item
{
a = 'a',
b = 'b'
};
string jsonPayload = serializer.Serialize(item_1);
var stringContent = new StringContent(jsonPayload);
stringContent.Headers.ContentType.MediaType = "text/json";
content.Add(stringContent, item_1.GetType().Name);
// then it makes a network request
如果我必须做出最好的猜测,这就是我认为它将在JS中执行的操作,尽管由于api返回415 Unsupported Media Type:
const item_1 = {
a: 'a',
b: 'b'
};
const jsonPayload = JSON.stringify(item_1);
const formData = new FormData();
formData.set('data', jsonPayload);
fetch('/some_api/endpoint',{
headers: {
"Content-Type":"text/json"
},
method: 'POST',
body: formData
});
如果您需要更多信息,或者对如何改进帖子有疑问或建议,请发表评论!谢谢你的帮助!
答案 0 :(得分:1)
为什么要创建FormData对象?我想您只想将内容作为JSON发送;
items
在此文档页面(https://developer.mozilla.org/en-US/docs/Web/API/FormData)看来,它不是JSON内容类型;
它使用与表单相同的格式(如果编码类型为 设置为“ multipart / form-data”。
答案 1 :(得分:0)
如果我没记错的话,Content-Type被发布为multipart / form-data;但是,有一个陷阱。
Form数据内容类型在其末尾具有边界。
我的同事所做的只是不定义Content-Type,而是让它自动确定。这样,它将具有正确的边界。
另一方面。如果您仅发送JSON;那么,如果可能的话,您不应使用表单数据;但是,而是json。仅当您尝试发送多种类型的数据时才真正需要表单数据。例如文字和图片同时显示。