如何在 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 中的文本?