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

Javascript 如何在ajax中将数组数组作为数据发送,javascript,Javascript,我有一个这样的数组 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 = a

我有一个这样的数组

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。 例如:


如果您真的想发送一个字符串化数组而不是原始数组,这是一个不错的选择

您的代码将如下所示:

const data=[“id”,“userId”,“[{item:[1,2]},{item:[1,2]}]];
//检查数据中的每个项是否为数组,并将其转换为JSON字符串
data.forEach((d,i)=>{
if(数组isArray(d)){
data[i]=JSON.stringify(d);
}
});

控制台日志(数据)为什么要将其作为字符串发送?只需原封不动地发送
数据
即可。如果是这样做的话..那么在服务器上,我会以一个空数组的形式获取数据,比如[“id”,“userId”,“[]”或者类似于[“id”,“userId”,“/u000”]”或者我应该以其他格式发送数据吗?--在现有答案的注释中,你说你不能对此进行任何更改,因为接收此消息的服务器端部分已经写入-现在是哪一个,实际上?@misorude实际上服务器端首先检查接收到的数据是否为数组..然后将该数据发送到后端代码,我正在解析接收到的数据..服务器端已经写入,但使用该数据的后端是由我编写的。所以我的问题是,是否有其他适当的格式发送该数据第三个参数是数组,我必须只将其作为数组发送。服务器代码是这样编写的。我没有其他选择,只需将对象放入数组
[{…}]
这样:我必须这样发送。只有第三个索引应该是数组..我不能修改
var arr=JSON.stringify([{item:[1,2]},{item:[1,2]}]);var数据=[“id”,“userId”,arr]你的代码所做的与我发送数据的方式相同..我自己在发送给我这个输出变量数据的数组之前使用JSON.stringify()。[“id”,“userId”,“item\”:[\“1\”,\“2\”],{“item\”:[\“1\”,\“2\”]}]…我的问题是如何在服务器端处理这个stringify数组…因为JSON.parse()给我这个数组的错误
     {
       "id": "userId",
       "data": [
                {
                  "item": [1,2]
                },
                {
                   "item": [1,2]
                }
              ]
      }