我一直在努力让数据形成一系列具有相同名称的复选框。
<input type="checkbox" name="node"/>
var selectedValues = [];
$(document.getElementsByName("node")).each(function () {
selectedValues.push($(this).checked);
});
$.ajax({
url: "/Summary/Test",
type: "POST",
data: selectedValues,
traditional: true
});
public void Test(string [] nodes)
{
}
我在这里做错了什么?我无法弄清楚为什么它会跳过那条线。
答案 0 :(得分:1)
如果要收集已检查复选框值的数组,可以使用mep方法:
var selectedValues = $('[name=node]:checked').map(function() {
return this.value;
}).get();
假设您使用的是jQuery(?)。
或者在简单的javascript中,它几乎相同:
var selectedValues = [],
nodes = document.querySelectorAll('[name=node]');
Array.prototype.slice.call(nodes).forEach(function(el) {
if (el.checked) {
selectedValues.push(el.value);
}
});
AJAX:
$.ajax({
url: "/Summary/Test",
type: "POST",
data: {nodes: selectedValues},
traditional: true
});
答案 1 :(得分:0)
您不能将所有复选框命名为相同,只会提交最后一个值。将每个更改为:
<input type="checkbox" name="node[]" />
这将创建一个选定值数组。