如何在 javascript 中的 FormData 中附加对象?

Posted

技术标签:

【中文标题】如何在 javascript 中的 FormData 中附加对象?【英文标题】:How to append objects in FormData in javascript? 【发布时间】:2019-11-26 03:14:45 【问题描述】:

我们需要通过将数据附加到 javascript 中的 formdata 中来将数据发送到服务器。在 javascript 中,我们有如下处理方式。

var ajax = new XMLHttpRequest();
ajax.open("POST", url, true);
var formData = new FormData();
var obj = url: "uploadUrl",type: 'POST', mode: true;
formData.append('myData', JSON.stringify(obj));
ajax.send(formData);

在服务器端,我们有如下方法。

 public void Save(MyModel args) 
     ....
    


    public class MyModel
    

        public MyObj myData  get; set; 

    
    public class MyObj
    
        public string url  get; set; 
        public string type  get; set; 
        public bool mode  get; set; 
    

args.myData 始终接收为 null。这里如何接收客户端发来的这种格式的数据?提出您的想法。

【问题讨论】:

附加每个键/值对 从提供的代码中,您没有将表单数据附加到 xmlhttprequest 对象。 @Dimitar,我没有提到这一点,但这不是我们这边的问题。 您的ajax.open 看起来仍然错误(请参阅我的回答):这只是这里的另一个错误吗?您是否检查了网络流量以查看问题出在客户端还是服务器端? @KarthikRavichandran,你错过了你作为“服务器端”的东西。 MVC,Web Api,还有什么?请提供所有必要的信息,以便人们可以帮助您。 【参考方案1】:

您需要明确发送formData:

var ajax = new XMLHttpRequest();
ajax.open('POST', url, true);
var formData = new FormData();
var obj = url: "uploadUrl",type: 'POST', mode: true;
formData.append('myData', obj);
ajax.send(formData);

(请注意,我在 ajax.open 中修复了 arg 顺序,接收到的表单数据将类似于 [object Object] 但我认为 JSON.stringify() 应该是这里的解决方案 - 这取决于您的服务器如何解析表单数据)

【讨论】:

【参考方案2】:

在服务器代码中,将 args 的类型设置为 String 并检查您是否正在获取字符串化数据。 如果您得到它,请相应地解析数据以适应 MyModel。

提供更多服务器代码信息可能有助于我进一步研究。

编辑 1:可能也有帮助的链接

Reading file input from a multipart/form-data POST Are there any multipart/form-data parser in C# - (NO ASP)

【讨论】:

如果我们将参数类型设置为它正确接收的字符串。我们应该用强定义的类而不是字符串来改变类型吗?因为多个数据将被发送到服务器 能否提供参数(字符串数据)。 请查看可能对您有帮助的附加链接。

以上是关于如何在 javascript 中的 FormData 中附加对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 javascript 中的 FormData 中附加对象?

如何在 JavaScript 中执行 str_replace,替换 JavaScript 中的文本?

加载javascript时如何在vue组件中引用javascript中的img

如何以编程方式单击 JavaScript 中的元素?

如何确定 JavaScript 中的操作系统路径分隔符?

[转] JavaScript中的属性:如何遍历属性