从一系列复选框中发布值

时间:2014-10-06 15:18:55

标签: javascript ajax model-view-controller

我一直在努力让数据形成一系列具有相同名称的复选框。

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

我在这里做错了什么?我无法弄清楚为什么它会跳过那条线。

2 个答案:

答案 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[]" />

这将创建一个选定值数组。