我在javascript中创建了两个数组,即模块和权重。模块数组包含模块ID,权重数组包含相应的权重。我创建了一个多维数组,模块ID作为其键,相应的权重作为其值。到目前为止我做了什么
//module array
modules = [74,82,83]
//weight array
weights = [70,10,20]
//created array
moduleWeights = [74: 70, 82: 10, 83: 20]
我创建了' moduleWeights'数组由以下代码
for(i=0;i<modules.length;i++)
{
moduleWeightArray[modules[i]] = weights[i];
}
当我通过AJAX将这个数组传递给PHP时,我得到了类似的东西
Array(
[0] =>
[1] =>
[2] =>
.
.
.
[74] => 70
.
.
[82] => 10
[83] => 20
)
即阵列的长度从3增加到84,这是正确的。为什么会这样?我在像这样的帖子请求中传递数组
$.ajax({
type: 'POST',
url: 'url',
data: {data:moduleWeightArray},
dataType: 'json',
success: function(response)
{
}
})
任何帮助都将受到高度赞赏。 提前致谢
答案 0 :(得分:2)
你想要的是一个关联的对象,而不是一个数组。当您创建Javascript数组并将其索引74
设置为某个值时,在此之前隐含值0
到73
。这就是你所看到的。要拥有任意键值关联,您需要一个对象而不是一个数组。
var moduleWeights = { 74 : 70, 82 : 10, 83 : 20 };
答案 1 :(得分:0)
这种情况正在发生,因为您正在使用数组。你可能有
moduleWeightArray = [];
在某处你应该使用
moduleWeightArray = {};
问题在于,当序列化数组时,它总是将所有索引序列化为最大的索引(默认值为undefined
)。还有一个JavaScript的奇怪之处。您应该使用对象/字典。