将PHP数组发送到DataTables JS库

时间:2018-11-16 17:48:21

标签: javascript php ajax datatables

我正在尝试将php数组发送到JS Datatable库。

我正在使用以下示例: https://datatables.net/examples/server_side/simple.html

但是,由于我只是在测试功能,所以我没有从数据库中获取数据。

所以这基本上是我的php代码:

$data_fmt['data'][] = array("TEST");
echo json_encode( $data_fmt );

哪个给出的数组如下:

{
    "data": [
        ["TEST"]
    ]
 }

现在,在Ajax / JS端,我有以下代码:

$('#my_dt_table').DataTable( {                                                                                                                                                                                         
 "processing": true,                                                                                                                                                                                                  
 "serverSide": true,                                                                                                                                                                                                  
 "ajax": "my_php_script.php"                                                                                                                                                                                            
 } );  

在HTML中,我有:

<table id='my_dt_table' class='display' style='width:100%'>                                                                                                                                                            
<thead>                                                                                                                                                                                                                  
  <tr>                                                                                                                                                                                                                     
    <th>Column Title</th>                                                                                                                                                                                              
  </tr>                                                                                                                                                                                                            
 </thead>                                                                                                                                                                                                             
 <tfoot>                                                                                                                                                                                                                  
   <tr>                                                                                                                                                                                                    
     <th>Column Title</th>                                                                                                                                                                                         
   </tr>                                                                                                                                                                                                            
 </tfoot>                                                                                                                                                                                                       
</table>

尽管JSON是正确的,但我遇到以下错误:

  

DataTables警告:表id = my_dt_table-无效的JSON响应。有关此错误的更多信息,请参见http://datatables.net/tn/1

我做错了什么?

谢谢

2 个答案:

答案 0 :(得分:0)

如果返回JSON,请同时添加JSON标头,并确保在echo json_encode()之前和之后都没有输出任何内容。

尝试类似的事情:

<?php
$data = [
    'data' => [ [ 'TEST' ] ]
];
header('Content-Type: application/json');
echo json_encode($data);

然后使用某些工具,或浏览器内置的开发人员工具或Postman之类的扩展程序,发送GET请求并获取该文件,以验证您的文件返回了正确的JSON响应。

答案 1 :(得分:0)

更改服务器端脚本

<?php
header('Content-Type: application/json');

$data=array();
$data[] =array("TEST");//a row
$data[] =array("TEST 1");//a row with single colum
$data[] =array("TEST 2",'TEST 3');//a row double colum you can add more
print_r(json_encode(array('data'=>$data)));