3

「送信」ボタンがクリックされたときに呼び出されるjQuery関数があります。

function SubmitForm() {
    var idList = [];
    var list = $('#TableAdminPortfolio .CheckBoxProjects');
    list.each(function () {
        var id = $(this).closest('td').children('.hiddenId').val(); // parseInt()
        idList.push(id);
    });

    $.ajax({
        url: $(this).href,
        type: 'POST',
        data: idList,
        success: function (result) {alert('Successful');},
        error: function (result)  {alert('Error');}

    });
}

私のコントローラーは次のようになります:

[Transaction]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(IEnumerable<int> projects)
{
    ...
}

パラメータ(プロジェクト)は常にnullです。私はjQueryコードをステップスルーして、各ステップでそれを検査しました。idListは確実に入力されています。私も$ajaxを次のように試しました:

$.ajax({
        url: $(this).href,
        type: 'POST',
        data: { projects : idList },
        success: function (result) {alert('Successful');},
        error: function (result)  {alert('Error');}

    });

そして、それでも同じ結果。何が起こっているのかアイデアはありますか?はい、フォーム投稿ではなくAjax投稿を行う理由があります。

TIA

注:jQueryv1.6.4とASP.NETMVC2.0を使用しています。

4

2 に答える 2

2

JSON.stringifyを使用して配列をjsonに変換してみてください

$.ajax({
    url: $(this).href,
    type: 'POST',
    dataType: "json",
    data: JSON.stringify(idList),
    traditional: true,
    success: function (result) {alert('Successful');},
    error: function (result)  {alert('Error');}

});
于 2013-02-12T23:13:24.640 に答える
0

試す:

 var mylist='{"projects":'+ JSON.stringify(idList)+'}';

それから

data:mylist,
于 2013-02-13T00:38:26.570 に答える