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

Requested unknown parameter when using the jquery datatable and add data with ajax call

我在我的 MVC 应用程序中使用 jQuery 数据table 并且我第一次从服务器向它发送数据并且它工作正常但是当我想用 SignalR 更新 table请求然后它给出请求的未知参数。

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 显示的警报。

你不能简单地调用

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);