要澄清我已经检查过的复杂文件的价值。我需要在一个类似于PHP示例的阵列中组织它们。致谢
我正在尝试构建一个经过检查的复选框数组,通过AJAX发送以供PHP处理。最初我通过PHP获得了选中的复选框,但是我无法将此过程转换为Javascript。
有三组不同的复选框(“第一个”,“第二个”,“第三个”),对于每个组,有4个不同的复选框可以检查。
复选框的html遵循相同的模式,最多为值4。
<input type="checkbox" name="first" class="selection first" value="1" />
<input type="checkbox" name="second" class="selection second" value="1" />
<input type="checkbox" name="third" class="selection third" value="1" />
<input type="checkbox" name="first" class="selection first" value="2" />
<input type="checkbox" name="second" class="selection second" value="2" />
<input type="checkbox" name="third" class="selection third" value="2" />
依旧......
PHP代码将返回一系列已选中的复选框。
$selections => array(
['first'] => array(
[0] => 1,
[1] => 3,
[2] => 4),
['second'] => array(
[0] => 2),
['third'] => array(
[0] => 1,
[1] => 4)
);
我一直在努力尝试在JavaScript中复制它,但我不断遇到cannot convert undefined to object
之类的错误。我循环可用的位置来创建数组,然后循环所有的复选框,如果选中,我得到值。
console.log()
打印位置('first','second'或'third')和选择的数字(1 - 4)。这就是我所需要的,但是如何将它放在类似于PHP的数组中呢?
function getSelections() {
var selections = new Array();
$('.position').each(function() {
selections[$(this).attr('value')] = new Array;
});
$('.selection').each(function() {
if( $(this).prop('checked') == true ) {
position = $(this).attr('name');
selection = $(this).attr('value');
console.log(position + ' - ' + selection);
}
});
return selections;
}
它将作为JSON发送到PHP脚本,我需要将其解码为类似PHP的数组。
答案 0 :(得分:1)
不需要任何花哨的东西......改变它并查看发布的数组。
<input type="checkbox" name="first[]" class="selection first" value="1" />
<input type="checkbox" name="second[]" class="selection second" value="1" />
<input type="checkbox" name="third[]" class="selection third" value="1" />
<input type="checkbox" name="first[]" class="selection first" value="2" />
<input type="checkbox" name="second[]" class="selection second" value="2" />
<input type="checkbox" name="third[]" class="selection third" value="2" />
然后将其序列化为正常,以通过ajax提交。
答案 1 :(得分:0)
Jquery :checked Selector可以提供帮助