DataTable显示零行甚至得到响应

DataTable shows zero rows even get the response

本文关键字:响应 零行 显示 DataTable      更新时间:2023-09-26

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

服务器响应有点遗漏。你有

{
  "iTotalRecords": 2,
  "iTotalDisplayRecords": {
    "data": [

但是CCD_ 1被假定为过滤记录的数目(当然CCD_ 2是记录的总数)。如果您更正的响应

{
  "iTotalRecords": 2,
  "iTotalDisplayRecords": 2,
  "data": [
    {

并删除"sAjaxDataProp": "",,然后它就工作了->http://jsfiddle.net/2o6eLt2z/

所以问题出在服务器端,没有可能纠正客户端的问题,因为JSON永远不会作为服务器端源与dataTables一起工作。您可以在ajax: { url: ...}中使用serverscript,并在dataSrc回调中返回更正的JSON,但在我看来,您希望使用服务器端处理。