Php 如何用从mysql检索的数据填充Jquery datatable?

Php 如何用从mysql检索的数据填充Jquery datatable?,php,mysql,ajax,datatables,jquery-datatables,Php,Mysql,Ajax,Datatables,Jquery Datatables,我试图用数据库中的数据填充某个按钮上的datatable 但是,以下代码正在工作[使用文本文件] 如何将这些数据传递给php?? 以下代码不起作用[使用php/mysql] 如何使其工作???问题在于您对数据进行JSON编码的方式。简单地执行console.log将有助于开始工作。但你也可以试试这个 PHP Side $result = mysql_query("SELECT data1,data2,data3,data4 from tbl_data"); //query

我试图用数据库中的数据填充某个按钮上的datatable

但是,以下代码正在工作[使用文本文件]

如何将这些数据传递给php?? 以下代码不起作用[使用php/mysql]


如何使其工作???

问题在于您对数据进行JSON编码的方式。简单地执行console.log将有助于开始工作。但你也可以试试这个

 PHP Side
 $result = mysql_query("SELECT data1,data2,data3,data4 from tbl_data");          //query
 $array = $conn->query($result);                          //fetch result    
 echo json_encode($array);

 HTML side,
 $(function () 
{

$.ajax({                                      
  url: 'response.php',                        
  data: "",                        

  dataType: 'json',                     
  success: function(data)          
  {
    var id = data[0];  //first attribute            
    var vname = data[1];           //second attribute
    $('#tblData').html("<b>id: </b>"+id+"<b> name: </b>"+vname); //Set output element html
  } 
});
})


它从文本文件工作的原因是因为它是纯文本。但是DB查询frim PHP的结果是response.PHP中的一个对象

,在while循环部分,这应该可以工作-

$dataArr['aaData'] = Array();
while($row = $res->fetch_assoc()){
    $r = Array();
    foreach($row as $key=>$value){
        $r[] = "$key $value";
    }
    $dataArr['aaData'][] = $r;
} 
header('Content-Type: application/json');
echo json_encode($dataArr);

/*
The output will be of the form, 
{
"aaData": [
 [
    [
       "colname data"
       ...
    ],
 ]
*/

在jquery数据表中,显示来自服务器端的动态数据的操作如下

在客户端

oTable = $('#tblData').dataTable({
                "bProcessing": true,
                "bServerSide": true,
                "sAjaxSource": "response",
                "fnServerParams": function ( aoData ) {
                        aoData.push( { "name": "more_data", "value": "my_value" } );
                }
        });   
在发球端,你需要尽你所能

$output = array(
          "sEcho"=>intval($_GET['sEcho']),
          "iTotalRecords"=>$iTotal, // total number of records 
          "iTotalDisplayRecords"=>$iFilteredTotal, // if filtered data used then tot after filter
          "aaData"=>array()
        );     

while($row = $result->fetch_array(MYSQLI_ASSOC)){
  $output["aaData"][] = $row ;
}

echo json_encode( $output );

我正在构建一个开源CRM www.sqcrm.com,您可以查看代码,对于数据显示,我使用了Jquery数据表。这可能有助于您使用数据表的不同功能。

我尝试了这个方法,但没有成功。它将继续显示加载消息。请再试一次-dataTable显示带有此错误的空白记录-DataTables警告表id='tblData':从数据源为行请求的未知参数“0”0@Vikram现在试试这个。删除了花括号,但列名和数据已像字符串一样连接在一起,如您的问题中所示。我现在收到此错误-DataTables警告table id='tblData':DataTables警告:无法解析来自服务器的JSON数据。这是由JSON格式错误引起的。通过使用JSONECODE,我可以确保正确解析JSON。在[]上尝试输出,这将帮助您找出错误发生的位置。经过一些修改后,它现在可以工作。其中一个修改类似于-使用$r[]=$value;而不是$r[]=$key$value;您的方法不安全!mysql\u查询已被弃用。请更新到MySQLi甚至PDO,而不是使用mysql\u查询。$result=$conn->querySELECT data1、data2、data3、data4 from tbl\u data;
oTable = $('#tblData').dataTable({
                "bProcessing": true,
                "bServerSide": true,
                "sAjaxSource": "response",
                "fnServerParams": function ( aoData ) {
                        aoData.push( { "name": "more_data", "value": "my_value" } );
                }
        });   
$output = array(
          "sEcho"=>intval($_GET['sEcho']),
          "iTotalRecords"=>$iTotal, // total number of records 
          "iTotalDisplayRecords"=>$iFilteredTotal, // if filtered data used then tot after filter
          "aaData"=>array()
        );     

while($row = $result->fetch_array(MYSQLI_ASSOC)){
  $output["aaData"][] = $row ;
}

echo json_encode( $output );