将jQuery数组发送到MVC4控制器

将jQuery数组发送到MVC4控制器,jquery,asp.net-mvc,json,Jquery,Asp.net Mvc,Json,我一直在寻找一种方法来实现这一点,我已经查看了这里发布的几个问题,但我无法获得我想要的数组的所有元素。这是我正在发送的阵列: function myFunction(e) { var containerChildren = $("#active").children(); for (i = 0; i < containerChildren.length; i++) { var announcementarray = new Arr

我一直在寻找一种方法来实现这一点,我已经查看了这里发布的几个问题,但我无法获得我想要的数组的所有元素。这是我正在发送的阵列:

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

感谢您的帮助!(我尝试了
传统:true
.serialize()
等)

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

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

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

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

从$.children()返回的元素;也是jQuery对象,因此这可以做得更好一些。查看我的更新。这看起来不那么令人困惑。谢谢你把它清理干净。但是,每当我运行它时,我都会收到一个运行时错误,说它无法识别“数据”(这是html“data-*”中的一个属性,我将把您的响应标记为答案,但我发现了错误。我在for循环中声明了数组。取出后,它就像一个符咒一样工作!!感谢您的反馈!从$.children()返回的元素);也是jQuery对象,因此这可以做得更好。请参阅我的更新。这看起来不那么令人困惑。感谢您清理它。但是,每当我运行它时,我都会收到一个运行时错误,说它无法识别“数据”(这是html“data-*”中的一个属性,我将把您的响应标记为答案,但我发现了错误。我将数组声明放在for循环中。取出后,它就像一个符咒一样工作!!感谢您的反馈!发现错误:数组声明在for循环中。取出后,问题得到修复!发现错误:dec数组的放大在for循环的内部。将其取出后,问题得到解决!