1

我有一个包含文件的表单,所以我使用 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

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

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

4

1 回答 1

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

于 2013-11-08T02:20:39.123 回答