以Datatable格式显示从PHP返回的JSON数据
我是JQUERY新手,我正在尝试搜索某物,根据搜索到的文本,我正在做一个ajax调用,它将调用php函数,php将返回JSON数据给我。 我想在Datatable表单中显示返回的数据。 我有我的PHP文件table.PHP和JavaScript文件jss.js以及main.PHP。 PHP文件正在返回JSON数据,我可以使用alert来显示它 我想知道如何在datatable中显示它以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
<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);