这里有什么问题?
第一个例子:
console.log(ntags);
console.log(JSON.stringify(ntags));
控制台输出(谷歌浏览器):
[Array[0], Array[0]]
0: Array[0]
length: 0
numerical_value: null
tag_id: "3"
1: Array[0]
length: 0
numerical_value: "12"
tag_id: "5"
[[],[]]
显然变量" ntags"填充了一定数量的具有特定值的关联数组。但是JSON.stringify会生成一个空数组。
第二个例子 - 如果我尝试直接使用Ajax发布变量ntags,就会出现同样的问题:
$.ajax({ type:"POST", url: "/?tag_connection=update&fdata_id="+save_id, data: {cons: ntags}, success: function(result){
...
});
客户端不向服务器端发送任何发布数据(PHP中$ _POST为空)。
答案 0 :(得分:1)
JSON序列化不会序列化Array
的属性,这根本不是预期的行为 - 数组是值列表,按顺序排列。由于不是预期的行为,因此不会对此属性进行序列化。你可以从技术上将其序列化,但它会使数组作为数据类型失败。
例如,让我们说我们序列化数组[1,2,3,4]
- 然后JSON中的预期输出是:
[1,2,3,4]
仅仅是因为它的类型。如果数组像对象一样被序列化,那么输出可能如下所示:
{0:1,1:2,2:3,4:4,length:4}
正如您所看到的,这需要更长时间 - 这意味着您需要通过网络发送更多数据,以及使用任何其他编程语言创建的自定义对象。这样我们都同意数组。
因此,在这种情况下,您可能只想使用一个对象,它将输出预期值。尝试序列化:
[{length:0,numerical_value: null, tag_id: 3}, {length: 0, numerical_value: null, tag_id:2}]