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 に答える