我已经为此挣扎了一天多了,还不能让它工作。我想创建一个多维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);
}
}
});
});