Я пытаюсь работать с datatables и обработкой на стороне сервера. Это то, что у меня есть на мой взгляд:
<table id="datatables" class="display">
<thead>
<tr>
<th>Your Name</th>
<th>Date and Time</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<script>
$(document).ready( function () {
// DATATABLES CONFIGURATION
$('#datatables').dataTable( {
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "results/loadReportsAction"
} );
});
</script>
В моем ResultsController:
public function loadReportsAction() {
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender();
$row = array();
$output = array(
"iTotalRecords" => 34,
"iTotalDisplayRecords" => 34,
"aaData" => array()
);
$sessions = SessionQuery::create()->findByQuizId(3);
foreach($sessions as $session){
$row[] = "test";
$row[] = "test2";
$row[] = "test3";
$output['aaData'][] = $row;
$row = array();
}
echo json_encode( $output );
}
Как вы можете видеть, я просто пытаюсь загрузить строки, такие как "test", "test2",....
Сначала я хочу правильно загрузить данные, а затем создать фильтрацию, сортировку,....
Когда я загружаю это, я просто получаю эту ошибку:
Предупреждение DataTables (таблица id = 'datatables'): Предупреждение DataTables: данные JSON с сервера не могут быть проанализированы. Это вызвано ошибкой форматирования JSON.
Это то, что я получаю в своем ответе:
Или проверьте его здесь.
Он просто показывает существующий HTML, но не отправленный json.
Есть помощник действий json для вывода json, который будет обрабатывать как отключение макета, так и передачу данных как json с правильными заголовками.
Я не вижу ничего плохого в вашем коде, но я предлагаю вам сделать это
<table id="datatables" class="display">
<thead>
<tr>
<th>Your Name</th>
<th>Date and Time</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<script>
$(document).ready( function () {
// DATATABLES CONFIGURATION
$('#datatables').dataTable( {
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "results/load-reports"// Change this line
} );
});
</script>
public function loadReportsAction() {
$this->_helper->layout->disableLayout();// Comment this line
$this->_helper->viewRenderer->setNoRender();// Comment this line
$row = array();
$output = array(
"iTotalRecords" => 34,
"iTotalDisplayRecords" => 34,
"aaData" => array()
);
$sessions = SessionQuery::create()->findByQuizId(3);
foreach($sessions as $session){
$row[] = "test";
$row[] = "test2";
$row[] = "test3";
$output['aaData'][] = $row;
$row = array();
}
echo json_encode( $output );// Comment this line
$this->_helper->json->sendJson($output);
}