我仍然遇到这个问题。 我使用datatable.net来显示我的数据库(mySql)中的一些数据。
我确实知道API要注意我要按名称ASC(切换DESC)对列进行排序。 https://datatables.net/manual/server-side
order [i] [column]整数应该应用排序的列。 这是对列数据信息的索引引用 也提交给服务器。
order [i] [dir] string订购方向 对于这个专栏。 asc或desc表示升序 或者降序排序。
所以我的代码是这样的:
AJAX电话:
var dataTable = $('#tableau').DataTable({
"processing":true,
"serverSide":true,
"order":[],
"orderFixed": [],
"ordering":true,
"ajax":{
url:"/charbon/clae-listes/actions/appel.php",
type:"POST"
},
"columnDefs":[
{
"targets":[ 2, 3],
"orderable":false,
},
],
});
我的appel.php脚本
...
if(isset($_POST["order"]))
{
$query .= 'ORDER BY '.$_POST['order'][0]['column'].' '.$_POST['order'][0]['dir'].' ';
}
else
{
$query .= 'ORDER BY id DESC ';
}
...
这就是麻烦开始的地方:
当我点击我的第一列时,我在localhost上收到该错误消息:
DataTables警告:table id = tableau - 无效的JSON响应。更多 有关此错误的信息,请参阅http://datatables.net/tn/1
当我点击我的第二列对其进行排序时,对前一列进行排序。就像datatables直接从我的数据库中选择列号,并且偏移量为1,因为我的数据库没有列0
如何将正确的列归于正确的排序?
输出JSON响应
第1栏
<b>Fatal error</b>: Uncaught PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'order clause' in /Users/.../appel.php:45
第二栏
{"draw":9,"recordsTotal":10,"recordsFiltered":11,"data":[["type","Client","client".........
我的标题
draw:9
columns[0][data]:0
columns[0][name]:
columns[0][searchable]:true
columns[0][orderable]:true
columns[0][search][value]:
columns[0][search][regex]:false
columns[1][data]:1
columns[1][name]:
columns[1][searchable]:true
columns[1][orderable]:true
columns[1][search][value]:
columns[1][search][regex]:false
columns[2][data]:2
columns[2][name]:
columns[2][searchable]:true
columns[2][orderable]:true
columns[2][search][value]:
columns[2][search][regex]:false
columns[3][data]:3
columns[3][name]:
columns[3][searchable]:true
columns[3][orderable]:false
columns[3][search][value]:
columns[3][search][regex]:false
order[0][column]:1
order[0][dir]:asc
start:0
length:10
search[value]:
search[regex]:false
答案 0 :(得分:0)
使用header('Content-Type: application/json');
将JSON数据发送到浏览器,而无需解析它。
$output_data = /** your array with the data **/;
header('Content-Type: application/json');
echo json_encode($output_data);