Столбец datatables.net сортирует другой столбец

У меня все еще большие проблемы с этим вопросом.
Я использую datatable.net для отображения некоторых данных из моей базы данных (mySql).

Я делаю именно то, что API замечает, чтобы я сортировал столбцы по имени ASC (переключение DESC). https://datatables.net/manual/server-side

order [i] [column] integer Столбец, к которому следует применить порядок.
Это индексная ссылка на массив столбцов информации, которая
также представлены на сервер.

order [i] [dir] строка Направление заказа
для этого столбца. Это будет 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 ';
}
...

Вот где начинаются неприятности:

когда я нажимаю на 1-й столбец, я получаю сообщение об ошибке на localhost:

Предупреждение DataTables: table id = tableau — Неверный ответ JSON. Для большего
информацию об этой ошибке смотрите http://datatables.net/tn/1

И когда я щелкаю 2-й столбец, чтобы отсортировать его, который сортирует предыдущий столбец. Это как 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

2-я колонна

{"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

Решение

использование header('Content-Type: application/json'); чтобы отправлять данные JSON в браузер, не анализируя их.

$output_data = /** your array with the data **/;
header('Content-Type: application/json');
echo json_encode($output_data);
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector