我有一个包含文件的表单,所以我使用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”}}
显然不会在服务器端解析为任何内容。
答案 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