以Datatable格式显示从PHP返回的JSON数据

以Datatable格式显示从PHP返回的JSON数据,php,jquery,json,ajax,datatables,Php,Jquery,Json,Ajax,Datatables,我是JQUERY新手,我正在尝试搜索某物,根据搜索到的文本,我正在做一个ajax调用,它将调用php函数,php将返回JSON数据给我。 我想在Datatable表单中显示返回的数据。 我有我的PHP文件table.PHP和JavaScript文件jss.js以及main.PHP。 PHP文件正在返回JSON数据,我可以使用alert来显示它 我想知道如何在datatable中显示它 <div> <input type="text" name="search_query" id

我是JQUERY新手,我正在尝试搜索某物,根据搜索到的文本,我正在做一个ajax调用,它将调用php函数,php将返回JSON数据给我。 我想在Datatable表单中显示返回的数据。 我有我的PHP文件table.PHP和JavaScript文件jss.js以及main.PHP。 PHP文件正在返回JSON数据,我可以使用alert来显示它

我想知道如何在datatable中显示它

<div>
<input type="text" name="search_query" id="search_query" placeholder="Search Client" size="50" autocomplete="off"/>
<button  id="search" name="submit">Search</button>
</div>
mytable.php文件

<?php
    $data=array();
    $dbc = mysqli_connect('localhost','root','','acdc') OR die('Could not connect because: '.mysqli_connect_error());

        if (isset($_REQUEST['search_query'])) 
        {
            $name = $_REQUEST['search_query'];
        }


        if($dbc)
        {

            if (!empty($name)) 
            {
                $sql = "select  c.res1      res1, 
                                cc.res2     res2, 
                                cc.res3     res3, 
                                cc.res4     res4, 
                                cc.res5     res5 
                        from table1 c 
                        inner join table2 cc
                        on c.id = cc.id
                        where c.name like '".$name."%'
                        and cc.ENABLED = 1";

                $res = mysqli_query($dbc,$sql);


                if(!(mysqli_num_rows($res)==0))
                {
                    while($row=mysqli_fetch_array($res))
                    {
                        $data['RES1']   =   $row['res1'];
                        $data['RES2']   =   $row['res2'];
                        $data['RES3']   =   $row['res3'];
                        $data['RES4']   =   $row['res4'];
                        $data['RES5']   =   $row['res5'];
                    }
                }

                else

                {
                    echo "<div style='display: block; color:red; text-align:center'><br/> Not Found,Please try again!!!</div>";
                }
            }
        }
        echo json_encode($data);

        /*

    */

    ?>

一种方法是在
table.php
文件中创建包含数据的表单,在jQuery的支持下,您需要使用ajax结果
$('#表单id').html(ajax\u响应)填充


其他建议: 使用jQuery json数据分别填充每个字段

var jsonData = JSON.parse( ajax_response ); // decode json


将utf8设置为字符集可能是个好主意。如果表中有不同的字符集,则会出现JSON错误:

mysqli\u set\u字符集($dbc,'utf8');
然后使用
mysqli\u fetch\u assoc
而不是
mysqli\u fetch\u数组
。您希望将
字段:值
记录转换为JSON:

$data=array();
while($row=mysqli\u fetch\u assoc($res)){
$data[]=$row;
}
输出JSON:

echo json_编码(数组('data'=>$data));
现在,您可以直接将其与数据表一起使用:


$('#示例')。数据表({
阿贾克斯:{
url:'table.php'
},
栏目:[
{数据:'res1',标题:'res1'},
{数据:'res2',标题:'res2'},
//等等。。
]
})

放置一个
占位符
在本例中,我使用了
#results
,并动态创建一个表并将其附加到
占位符
。在本例中,我注释掉了您的ajax,但只需调用我创建的
函数
,以处理
success
回调中的结果,并将新的
函数
传递给javascript对象

$(文档).ready(函数(){
$(“#搜索”)。单击(函数(){
var search_query=$('#search_query').val();
如果(搜索查询!=''){
//$.ajax({
//url:“table.php”,
//方法:“张贴”,
//数据:{
//搜索查询:搜索查询
//  },
//成功:功能(数据){
//警报(“HEKKI”+数据);
//  }
//});
processResults({RES1:“result1”,RES2:“result2”});
}否则{
警报(“请再次搜索”);
}
});
});
函数processResults(obj){
变量$tbl=$(“”);
var$row=$(“”);
瓦特罗;
$。每个(对象、功能(idx、元素){
trow=$row.clone();
追加($(“”+obj[idx]+“”);
$tbl.追加(trow);
});
$(“#结果”)。追加($tbl);
}

搜寻

您可以包含
JSON
结构或返回的样本吗?在我看来,您的
PHP
只返回一个对象
{RES1:'RES1',RES2:'RES2,等等。}
@Steve是的,您是对的。JSON正在返回单个数据。您能帮助我如何获取所有数据吗?它可以工作,但当再次完成搜索而不刷新页面时,它会显示“无法重新初始化DataTable。有关此错误的详细信息,请参阅”@sodruldenmustapha,如果需要重新初始化DataTable,请使用。。。
var jsonData = JSON.parse( ajax_response ); // decode json
$('#id_input_1').val(jsonData.RES1);
$('#id_input_2').val(jsonData.RES2);
$('#id_input_3').val(jsonData.RES3);