我有一个数据表。我试图通过ajax加载。响应包含数据,但它没有显示数据。我的代码如下所示
<table id="user_list_table">
<thead>
<tr>
<th>name</th>
<th>phone</th>
<th>email</th>
<th>address</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
我的js包含
$(document).ready(function() {
var MY_AJAX_ACTION_URL = "/social/index.php?id=4&userform[action]=datatable&userform[controller]=User";
$('#user_list_table').dataTable({
"autoWidth": false,
"bPaginate": false,
"searching": false,
"ordering": true,
"oLanguage": {
"sZeroRecords": "No data Found",
"sProcessing": 'processing'
},
"bInfo": false,
"aoColumns": [
{'mData':'name','bSortable': true},
{'mData':'phone','bSortable': true},
{ 'mData':'email','bSortable': true },
{ 'mData':'address','bSortable': true}
],
"sAjaxDataProp": "",
"bProcessing": true,
"bServerSide": true,
"sAjaxSource":MY_AJAX_ACTION_URL
});
});
我收到了以下回复
{"iTotalRecords":2,"iTotalDisplayRecords":{"data":[{"name":"xyz","phone":"678654454","email":"xyz@gmail.com","address":"ytruye"},{"name":"abc","phone":"678654454","email":"abc@gmail.com","address":"ytruye"}]}}
答案 0 :(得分:1)
服务器响应有点错过了。
{
"iTotalRecords": 2,
"iTotalDisplayRecords": {
"data": [
但iTotalDisplayRecords
应该是过滤记录的数字(当然还有iTotalRecords
记录总数)。如果您更正了对
{
"iTotalRecords": 2,
"iTotalDisplayRecords": 2,
"data": [
{
并删除"sAjaxDataProp": "",
然后它可以正常工作 - &gt;的 http://jsfiddle.net/2o6eLt2z/ 强>
所以问题是服务器端,没有可能的方法来解决客户端问题,因为JSON永远不会将dataTables用作服务器端源。您可以在ajax: { url: ...}
中使用serverscript并在dataSrc
回调中返回更正后的JSON,但在我看来,您希望使用服务器端处理。