我有这个遗留的 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});如果您需要更多信息,或者对如何改进帖子有疑问或建议,请发表评论!谢谢你的帮助!
2 回答
慕桂英3389331
TA贡献2036条经验 获得超8个赞
为什么要创建 FormData 对象?我认为您只想将内容作为 JSON 发送;
const item_1 = {
a: 'a',
b: 'b'
};
const jsonPayload = JSON.stringify(item_1);
fetch('/some_api/endpoint',{
headers: {
"Content-Type":"text/json"
},
method: 'POST',
body: jsonPayload
});
从这个文档页面(https://developer.mozilla.org/en-US/docs/Web/API/FormData)看来,这不是 JSON 内容类型;
如果编码类型设置为“multipart/form-data”,它使用与表单相同的格式。
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
如果我没记错的话,Content-Type 被发布为 multipart/form-data;然而,有一个问题。
表单数据内容类型在其末尾有一个边界。
我的同事所做的就是不定义 Content-Type 并让它自动确定。这样它就会有正确的边界。
另一个注意事项。如果您只发送 JSON;那么,如果可能的话,你不应该使用表单数据;但是,而是json。仅当您尝试发送多种类型的数据时,才真正需要表单数据。例如文本和图像同时存在。
- 2 回答
- 0 关注
- 228 浏览
添加回答
举报
0/150
提交
取消