JS,如何在 FormData 中追加数组?

gdk*_*gdk 1 javascript arrays append form-data

我希望在 js FormData 中追加数组。

像这样,

var fd = new FormData();
fd.append("key", new Array(["a","b","c"]));
console.log(fd.get("key"));
Run Code Online (Sandbox Code Playgroud)

结果是,

a,b,c
Run Code Online (Sandbox Code Playgroud)

结果类型是“字符串”...

我想在 java(JSONArray) 中解析“aa”数组。

请帮我。

Nic*_*ons 5

您需要先对数据进行字符串化:

fd.append("key", JSON.stringify(["a","b","c"]));
Run Code Online (Sandbox Code Playgroud)

然后当你想要检索数据时,将它解析回一个数组。这可以使用 手动完成JSON.parse(),或者,如果您使用 express,可以使用 JSON/urlencoded body-parser 中间件为您完成。


说明

使用时.append(),作为第二个参数传递的数据将转换为字符串。在数组的情况下,该.toString()方法被调用,该方法通过逗号连接数组内的元素

a,b,c
Run Code Online (Sandbox Code Playgroud)

这并不好,因为它无法轻松解析回数组,尤其是当您拥有复杂数组(例如对象数组或多维数组)时。

但是,正如@Phil 所指出的,您可以通过JSON.stringify在输入数组上使用来管理它。这样,您就提供了一个 JSON 字符串,可以使用JSON.parse()

"[\"a\",\"b\",\"c\"]" // <-- can be parsed into an array using JSON.parse()
Run Code Online (Sandbox Code Playgroud)

请参阅下面的工作示例:

fd.append("key", JSON.stringify(["a","b","c"]));
Run Code Online (Sandbox Code Playgroud)