我有一个使用服务器端数据源的数据表:
$('.taskTable').dataTable({
"bServerSide": true,
"bProcessing": false,
"fnServerData": function (sSource, aoData, fnCallback) {
...
aoData.push({ "name": "groupIDs", "value": $("#groupIDs").val() });
...
$.ajax({
'dataType': 'json',
'type': 'post',
'url': "@Url.Action(MVC.Tasks.Tasks.DataTable())",
'data': aoData
});
}
});
问题是,$("#groupIDs").val()
没有格式化值,因此它们与我的模型(.NET MVC3)绑定。 .NET希望看到类似groupIDs[0]=23&groupIDs[1]=42&...
的内容,而是将其发送为groupIDs=[23,42,...]
。如何让数据表以正确的格式发送?
答案 0 :(得分:3)
想出来。我决定手动将值作为单独的参数输入,而不是努力让数据表自动格式化。
"fnServerData": function (sSource, aoData, fnCallback) {
var groupIDs = $("#groupIDs").val()
if (groupIDs != null) {
for (x = 0; x < groupIDs.length; x++) {
aoData.push({ "name": "groupIDs[" + x + "]", "value": groupIDs[x] });
}
}
... // more code
}
效果很好。希望这有助于其他人。
答案 1 :(得分:0)
组23,42,....相当于一个数组,现在我对.net不太了解,但是我确信它就像PHP它有一个for,同时,foreach相当于你的后端你会遍历这个数组并按照你想要的方式处理它。
在这种情况下,您在后端的示例groupdIDs=[23,42]
会执行类似
(注意这是PHP,我为它不是.net而道歉)
foreach($_POST['groupIDs'] as $groupid)
{
echo $groupid."<br>";
}
或
for($i=0;$i < count($_POST['groupIDs']);$i++)
{
echo $_POST['groupIDs'][$i]."<br>";
}
或
echo $_POST['groupIDs'][0]."<br>";
echo $_POST['groupIDs'][1]."<br>";