0

重複の可能性:
JSONを介してアレイをMVCコントローラーに送信しますか?

私はこれまでのところ、これに対する良い解決策を本当に見つけていません。

私のjavascript/jQueryと私はajaxを使用してデータを送信しようとしています。

    var val = new Array();
    $( ':checkbox:checked' ).each( function ( i )
    {
        console.log( $( this ).val() );
        val[i] = $(this).val();
    });
    removeSelected(val);


function removeSelected(listOfStuff)
{
    $.ajax({
        url: '@(Url.Action("removeSelected"))',
        type: 'POST',
        data: { listOfStuff: listOfStuff },
        dataType: 'json',
        success: function ( return_data )
        {
            $( ":checkbox:checked" ).closest('tr').remove();
        }
    });

そして私のコントローラー。配列はnullとして入ります。

    [HttpPost]
    public bool removeSelected ( string[] listOfStuff )
    {
       //do stuff
    }

助言がありますか?

4

1 に答える 1

1

この回答traditional: trueで参照されている提案を試すことができます。これは、APIリファレンスから次のようになります。

従来の「浅い」シリアル化を実行するかどうかを示すブール値。

その変更は次のようになります。

$.ajax({
    url: '@(Url.Action("removeSelected"))',
    type: 'POST',
    traditional: true,
    data: { listOfStuff: listOfStuff },
    dataType: 'json',
    success: function ( return_data )
    {
        $( ":checkbox:checked" ).closest('tr').remove();
    }
});

さらに、あなたのコードについて少し提案してもいいですか?私はこれを変更します:

var val = new Array();
$( ':checkbox:checked' ).each( function ( i )
{
    console.log( $( this ).val() );
    val[i] = $(this).val();
});

に:

var val = []; // use this array notation
$(':checkbox:checked').each(function ()
{
    console.log($(this).val());
    val.push($(this).val()); // use push() instead of an index
});
于 2012-11-20T20:49:30.270 に答える