jQuery和datatables:将数组传递给服务器端数据源

时间:2012-08-06 17:30:47

标签: jquery arrays asp.net-mvc-3 datatables

我有一个使用服务器端数据源的数据表:

    $('.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,...]。如何让数据表以正确的格式发送?

2 个答案:

答案 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>";