Javascript动态创建多维数组



我已经为此挣扎了一天多了,还不能让它工作。我想创建一个多维javascript数组,其中包含必须将AJAX调用传递到php的过滤器变量。目标是创建一个产品过滤器,并过滤掉不适用于过滤器变量的产品。

最后一部分是php,我知道如何解决它。但是我正在努力创建一个javascript数组,其中包含所有选定的过滤器变量。

有一个filter_ID和一个filter_value_ID。在过滤器中,例如大小,可以有不同的值,如S, M, L, XL等。

我想要一个这样的数组:

filterArr = array(
  [4] => array(10,20,30)
  [8] => array(4)
  [20] => array(2,3, 7)
)

当用户选中复选框时必须填充数组。我几乎管理它,但问题是我在数组中获得null项,因为我无法在数组中获得filterID。

我的代码在JSFiddle: http://jsfiddle.net/VCfjp/

出错的部分在第10,11,12行:

if (!(filterID in filter)) {
  filter[filterID] = [];
}
我现在被困住了。我会知道如何在PHP中做到这一点,但不能让它在javascript中工作。感谢您的帮助!当然,我一直在看论坛上的其他帖子,但找不到任何匹配的。

JS中的哈希数组被定义为对象,所以像这样使用它:

var object = { 4: [10,20,30], 8: [4], 20: [2,3,7] };

只需观察PHP在发出

时输出的内容:

echo json_encode(array( [4] => array(10,20,30) [8] => array(4) [20] => array(2,3, 7) ));

您请求的代码:

jQuery(document).ready(function($) { var hashArray = {}; $('.myCheckbox').on('change', function() { var self = $(this), checkboxId = parseInt(self.attr('data-id')), // since you used it as a number above checkboxValue = parseInt(self.val()); // since you also used it as a number above if (self.is(':checked')) { // add to array if (!hashArray.hasOwnProperty(checkboxId)) hashArray[checkboxId] = []; hashArray[checkboxId].push(checkboxValue); } else { if (hashArray.hasOwnProperty(checkboxId)) { // remove from array if it exists hashArray[checkboxId].splice(hashArray[checkboxId].indexOf(checkboxValue), 1); } } }); });

相关内容

  • 没有找到相关文章

最新更新