【问题标题】:How to append objects in FormData in javascript?如何在 javascript 中的 FormData 中附加对象?
【发布时间】: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,还有什么?请提供所有必要的信息,以便人们可以帮助您。

标签: javascript c# xmlhttprequest multipartform-data form-data


【解决方案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:可能也有帮助的链接

    【讨论】:

    • 如果我们将参数类型设置为它正确接收的字符串。我们应该用强定义的类而不是字符串来改变类型吗?因为多个数据将被发送到服务器
    • 能否提供参数(字符串数据)。
    • 请查看可能对您有帮助的附加链接。
    猜你喜欢
    • 2017-08-13
    • 2019-03-05
    • 2023-01-06
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    • 2022-08-18
    • 2019-09-21
    • 2020-12-03
    相关资源
    最近更新 更多