无法获取DataTables ajax调用工作

时间:2016-03-02 17:08:13

标签: jquery ajax datatables

我正在试图弄清楚如何在DataTables 1.10中使用ajax选项。对于我的生活,我无法弄清楚它是如何运作的。

我的服务器端请求在查询时会响应一个对象,其中一个元素是一个与我的表的列布局匹配的数组。我正在使用的初始化代码是:

$("#history-table").DataTable({
    'ajax': {
        'url': "/some-path-here",
        'type': "POST",
        'data': { 'pid': pID } // Some data that the server needs
    },
    'columns': [
        { data: 0},
        { data: 1},
        { data: 2},
        { data: 3},
        { data: 4},
        { data: 5}
    ],
    'dataSrc': 'history',
    'autoWidth': false,
    'lengthChange': false,
    'ordering': false,
    'pageLength': 50
});

我的AJAX调用返回的对象如下所示(每个元素都是一个字符串):

{
    'success': True,
    'history': [
        ["John Doe", "02 Mar 2016", "Area 1", "Value A", "May 15", "200"],
        ["Jane Doe", "29 Feb 2016", "Area 2", "Value B", "Apr 15", "100"],
        [ ... ]
    ]
}

我的服务器端逻辑正在处理并正确返回,但是我从缩小的DataTables代码中收到了一条无用的错误消息:

  

TypeError:f未定义

我怎样才能弄清楚我的真正问题是什么?有什么明显的东西我不见了吗? DataTables文档不是很有用,因为它们的所有AJAX示例似乎都是从文本文件中提取的。

1 个答案:

答案 0 :(得分:2)

  • 选项dataSrc应该是ajax选项的子属性。
  • 如果数据元素按顺序显示,则无需指定columns
  • 您的JSON响应似乎无效。应该是正确的回应

    {
      "success": true,
      "history": [
        ["John Doe","02 Mar 2016","Area 1","Value A","May 15","200"],
        ["Jane Doe","29 Feb 2016","Area 2","Value B","Apr 15","100"]
      ]
    }
    

更正后的代码如下所示:

$("#history-table").DataTable({
    'ajax': {
        'url': "/some-path-here",
        'type': "POST",
        'data': { 'pid': pID },
        'dataSrc': 'history'
    },
    'autoWidth': false,
    'lengthChange': false,
    'ordering': false,
    'pageLength': 50
});

请参阅this jsFiddle以获取代码和演示。