当通过AJAX传递给PHP时,传递多维数组会增加其长度



我用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)
                          {
                          } 
        })

如有任何帮助,我们将不胜感激。提前感谢

您想要的是一个关联的对象,而不是数组。当您创建一个Javascript数组并将其索引74设置为一个值时,在此之前有一个隐含值073。这就是你所看到的。若要具有任意键值关联,您需要一个对象而不是数组。

var moduleWeights = { 74 : 70, 82 : 10, 83 : 20 };

发生这种情况是因为您使用的是数组。你可能有

moduleWeightArray = [];

在某个地方,你应该使用

moduleWeightArray = {};

问题是,当序列化数组时,它总是将所有索引序列化到最大的索引(默认值为undefined)。还有一个JavaScript的怪异之处。您应该使用对象/字典。

相关内容

  • 没有找到相关文章

最新更新