如何在JavaScript中向FormData中追加对象?

5
我们需要通过在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。如何以此格式接收来自客户端的数据?请提供您的想法。


追加每个键/值对 - charlietfl
从提供的代码中可以看出,您没有将表单数据附加到XMLHttpRequest对象上。 - Dimitar
@Dimitar,我忘了提到这一点,但这不是我们这边的问题。 - Karthik Ravichandran
你的 ajax.open 看起来仍然有问题(请参考我的答案):这只是另一个错误吗?你是否检查过网络流量以确定问题是在客户端还是服务器端? - Jb31
@KarthikRavichandran,您漏掉了“服务器端”的内容。MVC、Web Api还是其他什么?请提供所有必要的信息,以便人们能够帮助您。 - Dimitar
我在我的项目中使用了MVC。 - Karthik Ravichandran
2个回答

2
你需要明确发送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中的参数顺序,接收到的表单数据将会是类似于[object Object]的内容,但我认为JSON.stringify()应该是解决方案——这取决于您的服务器如何解析表单数据。"最初的回答"

1

如果我们将参数类型设置为字符串,它可以正确接收。我们应该改用强类型定义的类而不是字符串吗?因为可能会向服务器发送多个数据。 - Karthik Ravichandran
你能提供参数(字符串数据)吗? - Naveen Kumar V
请查看附加的链接,可能会对您有所帮助。 - Naveen Kumar V

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接