我有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 - 过滤器不起作用....我检查控制台的错误 - 但有没有....谢谢。
答案 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