如何创建XMLHttpRequest FormData表单对象

时间:2013-11-08 01:56:14

标签: javascript json spring xmlhttprequest jackson

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

我想要做的是能够发送将由服务器端的jackson解析的对象。就像你和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
     

内容 - 处置:表单数据; NAME = “arrayOfElements”   { “0”:{ “ID”:2 “类型”: “dfsdf”, “URL”: “sdfsdff”, “版本”: “asdasd”}}

显然不会在服务器端解析为任何内容。

1 个答案:

答案 0 :(得分: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