javascript - 在 MVC 应用程序中使用 DataTables.NET ajax 调用访问 WebAPI 2 json

标签 javascript jquery asp.net-mvc asp.net-ajax datatables-1.10

我一直在尝试让 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/

相关文章:

asp.net-mvc - 来自默认文件夹(EditorTemplates/DisplayTemplates)以外的文件夹的 MVC 模板?

c# - 帮助 ASP.NET MVC HtmlHelper API 设计

javascript - 陷入 Codecademy 的 Javascript fizzbuzz 应用程序中

javascript - 如何使用 Vue-draggable 和 Vuex 将一个列表动态拆分为多个列表?

javascript - 在 webpack 的上下文中导入模块实际上做了什么?

javascript - 为 php 生成的元素添加点击事件

javascript - 响应式 2 列 Div 不起作用

javascript - JS如何在使用ajax后获取嵌入元素的值

.net - ASP.Net MVC - 为什么要为 favicon.ico 创建 Controller ?

javascript - 禁用 Mozilla Firefox 存储 javascript