2017-04-26 49 views
0

我有This表,我试图通过将此代码添加AJAX:数据表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

看,是该请求向服务器发出?如果是这样,回应是什么? – DelightedD0D

回答

1

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

请参阅您的网络标签在控制台工作小提琴here

+0

谢谢 - 那么我什么时候使用'serverSide':是吗? – RoyBarOn

+0

当你有一个不想加载到页面的巨大数据集(可能是100万条记录)时,可以使用'serverSide:true'。这将所有的搜索和排序条件发送回服务器,在那里编写代码来处理这些操作并将响应发送回前端。 – kennasoft

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

+0

感谢您的回复 - 不幸的是情况并非如此......无论如何感谢。 – RoyBarOn