DataTable显示零行甚至得到响应

时间:2016-07-25 11:21:54

标签: javascript jquery datatables

我有一个数据表。我试图通过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"}]}}

1 个答案:

答案 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,但在我看来,您希望使用服务器端处理。