【问题标题】:How to create a XMLHttpRequest FormData form object如何创建 XMLHttpRequest FormData 表单对象
【发布时间】:2013-11-08 01:56:14
【问题描述】:

我有一个包含文件的表单,所以我使用 XMLHttpRequest 来处理数据的发送。

我想要做的是能够发送将由服务器端的杰克逊解析的对象。就像你对 json 所做的那样。

例如:

{
"number": 123,
"string": "Hello World",
"object": {
    "a": "b"
}

}

所以我想创建“对象”。据我所知,我只能用

做“数字”和“字符串”
 formData.append("string", "Hello World");

有办法格式化吗?

当我只是附加一些 JSON 格式的对象时,我得到了这个结果:

    var oData = new FormData(document.forms.namedItem("upload-form"));
     element= {};
     element.id = 2;
     element.type = "dfsdf";
     element.url = "sdfsdff";
     element.version = "asdasd";
     arrayOfelement[0] = framework;
     oData.append("file", this.myfile.getFile());
     oData.append("frameworks",JSON.stringify(arrayOfelement))
     var xhr = new XMLHttpRequest();
     xhr.open('POST', 'design', true);   
     xhr.onload = function(e) { 
        console.log("upload finished");
      };
     console.debug("sending form data", oData);
     xhr.send(oData);




------WebKitFormBoundaryVWNBucDMZSIlUcXY

内容配置:表单数据;名称="arrayOfElements" {"0":{"id":2,"type":"dfsdf","url":"sdfsdff","version":"asdasd"}}

这显然不会在服务器端被解析成任何东西。

【问题讨论】:

  • 您的 WebKitFormBoundary 示例与您的 javascript 不完全匹配,但假设 JSON 字符串以您所描述的大致形式使其成为服务器端,那么它显然“不会被解析”进入服务器端的任何东西”?您将此问题标记为 Jackson,因此我假设您的服务器端是 Java。您是否想弄清楚如何使用 Jackson 解析 POST 数据和 JSON 解析 POST 字符串?

标签: javascript json spring xmlhttprequest jackson


【解决方案1】:

要通过 XMLHttpRequest 的表单数据发送 Javascript 对象,您需要对其进行 JSON 字符串化:

var obj = {
    "number": 123,
    "string": "Hello World",
    "object": {
        "a": "b"
    }
}
formData.append(JSON.stringify(obj));

更多:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 2013-11-30
    • 2017-07-13
    • 2020-06-17
    • 2012-12-10
    • 2015-11-12
    • 1970-01-01
    相关资源
    最近更新 更多