'未定义'数组中的元素

时间:2012-03-25 16:34:08

标签: javascript asp.net-mvc-3

我使用以下JavaScript来保存选中的复选框:

function SubmitCheckBoxes()
{
    alert("test");
    var selectedIDs = [];
    var x = 0;
    a = document.getElementsByTagName("input");
    for (i = 0; i < a.length; i++) {

        if (a[i].type == "checkbox" ) {
            if (a[i].checked) {
                alert(a[i].value);
                selectedIDs[x] = a[i].value;
                x++;
            }
        }
    }
    $.post('./Courses/SaveAndRedirect', selectedIDs, function (data) { });
}

然而,当我查看提交的表单数据时,对于数组中的每个元素,它的所有内容都是undefined: undefined

不确定这里有什么问题。

3 个答案:

答案 0 :(得分:1)

jquery post方法中的data属性是错误的。它不能将数组作为参数。这是文档

  

随请求发送到服务器的数据映射或字符串。

尝试使用对象文字:

$.post('./Courses/SaveAndRedirect', {selectedIDs: selectedIDs}, function (data) { });

我也会尝试用不同的方式写selectedIDs[x] = a[i].value;

selectedIDs.push(a[i].value);

答案 1 :(得分:0)

我认为问题可能是你的帖子变量只与数字实例相关联而不是字段名称

答案 2 :(得分:0)

您可以尝试这样的事情:

var selectedIDs = [];
$('input[type="checkbox"]:checked').forEach(function(i, e){
   selectedIDs.push($(e).val());
});
$.post('./Courses/SaveAndRedirect', selectedIDs, function (data) { });