Серверная обработка данных jquery в Zend Framework

0

Я пытаюсь работать с 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.

Это то, что я получаю в своем ответе:

Изображение 174551

Или проверьте его здесь.

Он просто показывает существующий HTML, но не отправленный json.

Теги:
datatables
zend-framework
server-side

1 ответ

3
Лучший ответ

Есть помощник действий 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);
}
  • 0
    Спасибо! Но я все еще получаю ту же ошибку с измененным кодом ... Знаете ли вы, как я могу проверить мой возвращенный JSON в JavaScript?
  • 0
    Если у вас есть firebug, вы можете сделать это очень легко. Откройте вашу сетевую панель firebug и посмотрите, какой запрос отправлен. Если вы не используете метод post, то щелкните правой кнопкой мыши запрос и выберите открыть ответ на новой вкладке, если вывод json идет правильно, то проблема на вашем веб-интерфейсе, иначе проблема в коде на стороне сервера.
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню