繁体   English   中英

如何在ajax中将数组作为数据发送

[英]How to send array of arrays as data in ajax

我有一个这样的数组

var data = ["id","userId",[{item:[1,2]},{item:[1,2]}]]

目前我将这些数据发送为

var data = ["id","userId","[{\"item\":[\"1\",\"2\"]},{\"item\":[\"1\",\"2\"]}"]]
by using JSON.stringify()

现在,当我收到用于解析的数据时,我必须将其拆分为 [{,}],然后拆分为 },以在数组元素上运行 for 循环

vars args = args[2].toString().split("[{")[1].split("}]")[0];
args = '{' +args;
var list = args.split("},");
list.forEach((elem)=>{
   elem = elem + '}';
   elem = JSON.parse(elem);
   var items = elem.item;
});

否则使用 JSON.parse() 时我会收到意外的令牌错误。我尝试使用 JSON.stringify() 然后解析它,但我得到了同样的错误。

我如何在服务器端正确解析这些数据?

我认为你可以更好地格式化你的数据,所以它是一个有效的 JSON。 例子:

     {
       "id": "userId",
       "data": [
                {
                  "item": [1,2]
                },
                {
                   "item": [1,2]
                }
              ]
      }

如果你真的想发送一个字符串化的数组而不是原始数组JSON.stringify是要走的路。

您的代码将如下所示:

 const data = ["id", "userId", [{item: [1, 2]}, {item: [1, 2]}]]; // check for each item in data if its an array and convert it to a JSON string data.forEach((d, i) => { if (Array.isArray(d)) { data[i] = JSON.stringify(d); } }); console.log(data);

这将是一个更可持续的解决方案,因为脚本会检查并转换列表中的每个项目。 因此,如果将来列表发生变化,此脚本仍会成功转换它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM