使用jquery数据表时请求的未知参数,并使用ajax调用添加数据

时间:2015-06-10 07:49:13

标签: datatables

我在我的MVC应用程序中使用jQuery数据表,第一次从服务器发送数据并且工作正常但是当我想用SignalR请求更新表时,它会提供所请求的未知参数。

HTML

<table id="tblEmployeeOut" class=" table table-striped table-bordered table-hover">
<thead>
<tr>
<th>
Id
</th>
<th>
Name
</th>
</tr>
</thead>
<tbody>
@foreach (var item in employeeOut)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.EnrollNumber)
</td>
<td>
<span> @item.FirstName @item.LastName</span>
</td>
</tr>
}
</tbody>
</table>

脚本

$('#tblEmployeeOut').dataTable({
bLengthChange: false,
"dom": '<"top"i>rt<"bottom"flp><"clear">',
sPaginationType: 'full_numbers',
bFilter: false,
bInfo: false,
iDisplayLength: 5,
"language": {
"emptyTable": " No Clients"
},
"aoColumns":
[
{ "sName": "Id" },
{ "sName": "Name" }
]
});

在第二张图片中,您可以看到返回的“Json”,在第三张图片中可以看到jQuery数据表显示的警告。

Table First Time

Data given with the ajax request

Alert by jquery

1 个答案:

答案 0 :(得分:2)

你不能简单地打电话

datatable.fnAddData(stock); // stock is an array of objects

不使用mData。

您需要提供其他类型的输入数据。 (选中this并导航到fnAddData的规范。

您可能想尝试一下我刚才提出的简单功能:

function objArrayToStringArray(array) {
        return array.map(function (item) {
            return [item["Id"], item["Name"]];
        });
    }

并像这样使用它:

var tmp = objArrayToStringArray(stock);
$('#tblEmployeeOut').dataTable().fnAddData(tmp);

希望这有帮助。

<强>更新 如果对这样的列使用mData属性:

"aoColumns":
    [
    { "sName": "Id", "mData": "Id" },
    { "sName": "Name", "mData": "Name" }
    ]

然后你可以像你想要的那样轻松地调用它:

$('#tblEmployeeOut').dataTable().fnClearTable();
$('#tblEmployeeOut').dataTable().fnAddData(stock);