0

我一直在寻找一种方法来做到这一点,并且我查看了这里发布的几个问题,但我无法获得我想要的数组的所有元素。这是我要发送的数组:

function myFunction(e) {

        var containerChildren = $("#active").children();

        for (i = 0; i < containerChildren.length; i++) {
            var announcementarray = new Array();
            announcementarray[i] = $('#' + containerChildren[i].id).data("id");
            alert(announcementarray[i]);
        }


        $.ajax({
            data:
                {
                    activeid: announcementarray
                },
            datatype: 'json',
            url: '/HumanResources/Announcement/AnnouncementActive',
            cache: false,
            type: 'POST',
            traditional: true,
            error: function (result) {
                alert(result);
            },
            success: function (result) {
                //alert(result);
            }
        });
    }

但是,每当控制器收到此数据时,它只显示最后一个具有实际值的孩子,其他所有孩子都是undefined。这是我的控制器的声明

public ActionResult AnnouncementActive(string[] activeid, string[] inactiveid)
{
}

任何帮助表示赞赏!(我试过traditional: true,,.serialize()等)

4

1 回答 1

4

您正在为第一个选择器中的每个子元素重新创建数组。尝试这样的事情:

function myFunction(e) {

    var announcementarray = [];

    $("#active").children().each(function() {
        announcementarray.push($(this).data("id"));
    });

    $.ajax({
        data:
            {
                activeid: announcementarray
            },
        datatype: 'json',
        url: '/HumanResources/Announcement/AnnouncementActive',
        cache: false,
        type: 'POST',
        traditional: true,
        error: function (result) {
            alert(result);
        },
        success: function (result) {
            //alert(result);
        }
    });
}
于 2013-06-11T19:52:05.543 回答