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

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

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

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

order[i][dir] string Направление заказа для этого столбца. Это будет asc или desc, чтобы указать восходящий или нисходящий порядок соответственно.

Итак, мой код такой:

АЯКС-вызов:

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-й столбец, я получаю это сообщение об ошибке на локальном хосте:

Предупреждение DataTables: 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

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

person Community    schedule 25.01.2018    source источник
comment
Вы должны вывести ответ JSON echo json_encode($output_array);   -  person Neo Morina    schedule 25.01.2018
comment
Вы действительно возвращаете действительный JSON в своем ....? Вы можете взглянуть на пример обработки на стороне сервера, чтобы получить представление для SSP   -  person brombeer    schedule 25.01.2018
comment
@NeoMorina Готово   -  person    schedule 25.01.2018


Ответы (1)


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

$output_data = /** your array with the data **/;
header('Content-Type: application/json');
echo json_encode($output_data);
person Neo Morina    schedule 25.01.2018