2012-11-20 134 views
0

可能重複:
Send array to MVC controller via JSON?傳遞從視圖中的字符串數組到控制器

我還沒有真正找到一個很好的解決這個至今。

我的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(); 
     } 
    }); 

和我的控制器。該數組爲空。

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

有什麼建議嗎?

+0

在黑暗中快速射擊:你有沒有嘗試過做' 'listOfStuff':listOfStuff'(與 '' 上的鍵)? – khellang

+0

也許你在客戶端的數組並不真正有內部字符串,但數字或任何但不是字符串? – Kath

回答

1

你可以嘗試traditional: true建議參考in this answer,其中,從the API reference是:

布爾值,指示是否執行傳統的「淺」系列化。

這種變化看起來像:

$.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 
}); 
相關問題