C#到Javascript:等效于“ new MultipartFormDataContent();”

时间:2018-08-15 13:55:16

标签: javascript c#

我有这个遗留的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 个答案:

答案 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。仅当您尝试发送多种类型的数据时才真正需要表单数据。例如文字和图片同时显示。