【问题标题】:JS, how to append array in FormData?JS,如何在FormData中追加数组?
【发布时间】:2019-05-13 02:20:45
【问题描述】:

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

像这样,

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

结果是,

a,b,c

结果类型是'字符串'...

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

请帮帮我。

【问题讨论】:

标签: javascript arrays append form-data


【解决方案1】:

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

fd.append("key", JSON.stringify(["a","b","c"]));

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


解释

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

a,b,c

这不好,因为它不能很容易地解析回数组,尤其是当您有复杂的数组时,例如对象数组或多维数组。

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

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

请参阅下面的工作示例:

var fd = new FormData();
fd.append("key", JSON.stringify(["a","b","c"]));

var str_arr = fd.get("key");
console.log(str_arr); // string format
console.log(JSON.parse(str_arr)); // array format

【讨论】:

  • 为什么不在附加值时使用JSON.stringify() 而不是尝试构建自己的 JSON 格式化程序
  • @Phil 好点!我已经更新了我的答案以改用它。谢谢
  • 任何新来这里供参考的人,fd.append("key", JSON.stringify(new Array(["a","b","c"]))); 可以简单地转为fd.append("key", JSON.stringify(["a","b","c"]));。无需将new Array 添加到现有的项目数组中。
  • @bubble-cord 好点,我一定是在 OP 的问题中保留了它。我已经更新它以删除数组构造函数
猜你喜欢
  • 2017-09-09
  • 2015-09-15
  • 1970-01-01
  • 2017-02-09
  • 1970-01-01
  • 2021-08-20
  • 1970-01-01
相关资源
最近更新 更多