【问题标题】:Can't get DataTables ajax call to work无法让 DataTables ajax 调用工作
【发布时间】:2016-06-15 16:35:28
【问题描述】:

我正在尝试弄清楚如何在 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 示例似乎都是从文本文件中提取的。

【问题讨论】:

  • 您的回复不是有效的JSON,您可以在jsonlint.com查看它
  • 另外dataSrc 应该是ajax 选项的子属性,ajax: { dataSrc: 'history' }

标签: jquery ajax datatables


【解决方案1】:
  • 选项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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 2017-04-24
    相关资源
    最近更新 更多