DataTable com Ajax não está funcionando bem após o uso serverSide: true

Eu tenho uma tabela de usuário usando DataTables, que conterá mais de 200 linhas. Parece tão bom quando estou usando DataTables por padrão, o"pageLength": 10, e este é o exemplo da tabela.

  Username     |   Type    |    Request   |
user01               1         request01
user02               1         request02
user03               2         request03
user04               1         request04
user05               1         request05
user06               1         request06
user07               1         request07
user08               1         request08
user09               1         request09
user10               1         request10

Showing 1 to 10 of 200 entries PrimeiroAnterior123...20PróximoÚltimo

Então, para reduzir o tempo de carregamento, eu decido usar"processing": true e"serverSide": true. Então eu tive algum problema com isso"serverSide" : true, É imprimir 200 linhas de dados na tabela.

Showing 0 to 0 of 0 entries (filtered from NaN total entries)$12Primeiro13$

$14Primeiro15$

Estou usando o CodeIgniter, aqui está o meu código:

No meuVisualizações + Js :

<select name="task" id="task">
   <option value="1">Task 1</option>
   <option value="2">Task 2</option>
</select>
<table id="user-request" class="table">
<thead>
   <tr>
      <th>Username</th>
      <th>Type</th>
      <th>Request</th>
   </tr>
</thead>
</table>
<script>
... on task change ...
... var task = $("#task").val(); ...
   $('#user-request').DataTable({
        'processing': true,
        'serverSide': true,
        'ajax': {
            'type': 'POST',
            'url': base_url+'user/get_user_request',
            'data': {"task":task,"csrf_token":$("input[name=csrf_token]").val()}
        }
    })
</script>

Nota : Task é um grupo diferente, por exemplo, Classe 1 ou Classe 2, Orchard University ou Harvard University

No meuControlador :

$task = $this->input->post('task', TRUE);
$user_request = $this->model->all_user_request(task);
foreach ($user_request as $ur)
{
    $arr = array();
    $arr[] = $ur->username;
    $arr[] = $ur->type;
    $arr[] = $ur->request;
    $data[] = $arr;
}
$output = array(
    "data" => $data
);
if (COUNT($output) > 0)
{
    echo json_encode($output);
}

No meuModelo :

public function all_user_request($task_id) {
   $query = "SELECT * FROM user_request WHERE task_id = ?";
   return $this->db->query($query, $task_id)->result();
}

Nota : No modelo está realmente usando 2INNER JOIN, Estou apenas simplificando a seleção apenas para perguntar aqui. (transformando-se em tabela de desnormalização apenas aqui).

Eu estava tentando adicionardraw, recordsTotal, recordsFiltered para$output no meu controlador apenas usando dados numéricos. Exemplo

$output = array(
    "draw" => 5,
    "recordsTotal" => 5,
    "recordsFiltered" => 5,
    "data" => $data
);
if (COUNT($output) > 0)
{
    echo json_encode($output);
}

Eu estava procurando a resposta, mas acho que o problema está aqui, mas ainda não tenho ideia de onde devo obter odraw - recordsTotal - recordsFiltered dados. Eu vejo em outra resposta de outras pessoas, elas usam"draw" => $_POST['draw'], então eu tentei, e não faz nada.

Então, eu estou tentando isso usando dados numéricos, mas o resultado ainda é o mesmo. eu preciso de ajuda com isto. Ainda imprime 200 linhas de dados na tabela.

Showing 0 to 0 of 0 entries (filtered from NaN total entries)$35Primeiro36$

questionAnswers(3)

yourAnswerToTheQuestion