我一直在尝试让 DataTables.NET 与我构建的 WebAPI RESTFul 服务很好地配合使用,但返回的 json 似乎不符合 DataTables 正在寻找的内容。我尝试了各种“服务器处理”示例以及我在互联网上找到的一些示例,例如 this one ,但我不想使 WebAPI 调用动态化。我希望 API 能够 self 记录,以便其他应用程序和其他开发人员也可以轻松地使用该 API。到目前为止,这就是我所拥有的。
执行 Json.stringify 后从我的 API 返回的 JSON 数组是这样的:
[{"FirstName":"Gregg","LastName":"Coleman"},{"FirstName":"Ryan","LastName":"May"},{"FirstName":"Sean","LastName":"OConnor"},{"FirstName":"Rebecca","LastName":"Coleman"}]
datatable.net 代码如下所示:
$("#data-table").DataTable({
serverSide: true,
processing: true,
ajax: {
url: "http://localhost:55180/api/Person",
type: 'GET',
dataType: 'json',
dataSrc: function(json)
{
var j = JSON.stringify(json)
alert(j);
return j;
}
}
});
HTML 看起来像这样
<table id="data-table" class="display">
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
</tr>
</thead>
我从 dataTables 返回的错误是:
“DataTables 警告:表 id=数据表 - 为第 0 行第 1 列请求未知参数“1”。有关此错误的更多信息,请参阅 http://datatables.net/tn/4。
任何帮助将不胜感激
最佳答案
您需要指定 JSON 中的哪些属性对应于哪些列。您还需要将 dataSrc
设置为 ''
(因为 dataTables 期望保存 JSON 项的数组被命名为 data
)或简单地返回 JSON在 dataSrc
回调中。只需将 dataSrc
设置为 ''
似乎是最简单的:
$("#data-table").DataTable({
serverSide: true,
processing: true,
columns : [
{ data : 'FirstName' },
{ data : 'LastName' }
],
ajax: {
url: "http://localhost:55180/api/Person",
dataSrc : ''
}
});
现在 dataTable 已正确初始化 -> http://jsfiddle.net/2jgt3mn8/
关于javascript - 在 MVC 应用程序中使用 DataTables.NET ajax 调用访问 WebAPI 2 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33949727/