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

2 php ajax jquery json datatables

我是 JQUERY 的新手,我正在尝试搜索某些内容,并且根据搜索到的文本,我正在执行 ajax 调用,该调用将调用 php 函数,并且 PHP 将使用 JSON 数据返回我。我想以数据表形式显示返回的数据。我有我的 PHP 文件 table.php 和 JavaScript 文件 jss.js 以及我的 main.php。PHP 文件正在返回 JSON 数据,我可以使用警报来显示它。

我想知道如何在数据表中显示它。

<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>
Run Code Online (Sandbox Code Playgroud)

我的 ajax/jss.js 文件

$(document).ready(function(){
    $('#search').click(function(){
        var search_query = $('#search_query').val();


        if(search_query !='')
        {       
            $.ajax({
                url:"table.php",
                method:"POST",
                data:{search_query:search_query},

                success: function(data)
                {
                    alert("HEKKI "+data);
                }
            });
        }
        else
        {
            alert("Please Search again");
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

我的 table.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);

        /*

    */

    ?>
Run Code Online (Sandbox Code Playgroud)

您能指导我如何在主页上显示结果吗?

dav*_*rad 5

将 utf8 设置为字符集可能是一个好主意。如果表中有不同的字符集,您将收到 JSON 错误:

mysqli_set_charset($dbc, 'utf8');
Run Code Online (Sandbox Code Playgroud)

然后使用mysqli_fetch_assoc代替mysqli_fetch_array. 您希望field: value记录转换为 JSON :

$data = array();
while($row=mysqli_fetch_assoc($res)) {
   $data[] = $row;
}
Run Code Online (Sandbox Code Playgroud)

输出 JSON :

echo json_encode( array('data' => $data) );
Run Code Online (Sandbox Code Playgroud)

现在您可以直接将其与 dataTables 一起使用:

<table id="example"></table>
Run Code Online (Sandbox Code Playgroud)
$('#example').DataTable({
  ajax: {
    url: 'table.php'
  },
  columns: [
    { data: 'res1', title: 'res1'},
    { data: 'res2', title: 'res2'},
    //etc..
  ]
})
Run Code Online (Sandbox Code Playgroud)