DataTables ajax不起作用

时间:2017-04-26 14:26:10

标签: jquery ajax datatable

我有This表,我试图通过添加此代码来添加ajax:

$('#example').DataTable({
    'serverSide': true,
    "bPaginate": false,
    "info": false,
    "iDisplayLength":20,
    "bLengthChange":false,
    'ajax': {
        type: 'GET',
        'url': 'https://api.myjson.com/bins/ftw5f',
        'data': function(data) {
            return data;
        }
    },
    "columns": [{
        "data": 'Name'
    }, {
        "data": 'Position'
    }, {
        "data": 'Office'
    },
        {
            "data": 'Age'
        },
        {
            "data": 'Start date'
        },
        {
            "data": 'Salary'
        },

    ],

    initComplete: function () { // the filters });

当它被硬编码 - 就像在小提琴中 - 它正在工作 - 但是当我添加ajax - 并删除所有硬编码的tr - 过滤器不起作用....我检查控制台的错误 - 但有没有....谢谢。

2 个答案:

答案 0 :(得分:1)

您的columns声明不正确,右侧应为,其值应出现在该列中,而不是该列的标签

如果您的数据如下:

{
  name: '',
  position: '',
  office: '',
  age: '',
  start_date: '',
  salary: '',
}

然后列应该如下:

"columns": [{
    "data": 'name'
  }, {
    "data": 'position'
  }, {
    "data": 'office'
  }, {
    "data": 'age'
  }, {
    "data": 'start_date'
  }, {
    "data": 'salary'
  },
],

有关详细信息,请参阅文档:https://datatables.net/manual/ajax#Column-data-points

答案 1 :(得分:1)

我相信你的问题是属性'serverSide': true。设置完成后,搜索不再发生在客户端上,而是发生在服务器上,因此您需要编写服务器端代码来处理搜索并返回结果的子集。如果您想从ajax源获取数据并仍然在客户端上处理,只需删除serverSide标志。

请参阅工作小提琴here