0

我正在尝试检索一组复选框值,存储到一个数组中,然后在我的 ajax 数据参数中使用该数组。

我从我的页面收到一条错误消息,指出数据的格式不正确。它必须是一个可枚举的。

这是我到目前为止所拥有的:

    var years = new Array();
    $("#years input:checkbox[name=type]:checked").each(function() {
        if (checked == true) {
            years.push($(this).attr('name') + "=" + $(this).val());
        }
    });

    var ajaxData = years;

    $.ajax({
        type: "POST",
        url: url,
        dataType: "json",
        data: ajaxData
    });

如何将数组转换为类似列表的格式?

谢谢!

4

3 回答 3

1

尝试这个:

var years = [];

$("#years input:checkbox[name=type]:checked").each(function () {
    years.push({
        name: $(this).attr('name'),
        val: $(this).val()
    });
});

var ajaxData = years;
于 2013-04-29T16:47:31.643 回答
1

使用 JSON:

    var years = {
        theYears: []
    };

       var years = new Array();
        $("#years input:checkbox[name=type]:checked").each(function() {
            if (checked == true) {
                theYears.push({
                    "name" : $(this).attr("name"), 
                    "value" : + $(this).val()});
            }
        });


   var ajaxData = theYears;

    $.ajax({
        type: "POST",
        url: url,
        dataType: "json",
        data: ajaxData
    });
于 2013-04-29T16:47:42.347 回答
1

正如评论中提到的 tymeJV ,您不需要检查复选框是否已选中,因为您已经选择了已选中的复选框,因此只需执行以下操作:

var years = new Array();
$("#years input:checkbox[name=type]:checked").each(function() {
   years.push($(this).attr('name') + '=' + $(this).val());
});

你可能应该给你的数组一个名字:

var ajaxData = {
    years:years
};
$.ajax({
        type: "POST",
        url: url,
        dataType: "json",
        data: ajaxData
    });

比从您的服务器中,您可以获取包含该数组的名为“years”的 post 变量。

于 2013-04-29T16:49:02.733 回答