Данные в формате Ajax на CodeIgniter с таблицами данных

Я хочу получить информацию из базы данных и показать ее на вкладке с таблицами данных и JQuery на CodeIngniter 3. Моя таблица на мой взгляд:

    <table id = "myTable" class = "display" style = "width:100%">
        <thead>
            <tr>
                <th>Name</th>
                <th>Last_name</th>
            </tr>
        </thead>
    </table>

Мой скрипт js:

$(document).ready(function(){
$('#myTable').DataTable( {
        "processing": true,
        "serverSide": true,
        "order":[],
        "ajax": {
        "url": '<?= base_url('main/getData');?>',
        "type": "POST",
         "data": { '<?php echo $csrf_token_name; ?>' : '<?php echo $csrf_token_hash; ?>' }
        },
    });
})

Мой метод контроллера:

public function getData()
    {
     $this->security->get_csrf_token_name();
     $this->security->get_csrf_hash();
        $table = $this->main_model->data();
        if (count($table) > 0) 
        {
            foreach ($table as $row) 
            {
                $tab = array();
                $tab["name"] = $row->name;
                $tab["last_name"] = $row->last_name;
                $r_tab[] = $tab;                
            }
            echo json_encode($r_tab);
        }

Большое спасибо :)

Это отдельный файл JS или файл внутри файла PHP просмотра? Кстати, не используйте короткие теги. Используйте <?php echo (причину можно найти на сайте PHP). Также эта строка должна выглядеть так: "url": "<?php echo base_url('main/getData');?>",. У вас есть проблема с экранированием кавычек / интерполяцией значений здесь.

Tpojka 28.05.2018 00:14

В чем проблема вашего нынешнего подхода?

Alex 28.05.2018 02:19
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
1 849
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы должны добавить опцию columns в свой код данных, чтобы удаленные данные отображались правильно.

$(document).ready(function(){
$('#myTable').DataTable( {
        "processing": true,
        "serverSide": false,
        "order":[],
        "ajax": {
            "url": '<?php echo site_url('main/getData'); ?>',
            "type": "POST",
             "data": { '<?php echo $csrf_token_name; ?>' : '<?php echo $csrf_token_hash; ?>' }
        },
            'columns': [
      { "data": "name", "name": "name"},
      { "data": "last_name", "name": "last_name"},
    ]
    });
});

В методе вашего контроллера ваш ответ JSON структурирован неправильно. Вам нужно добавить свои записи в элемент data вашего выходного массива.

Обновленный метод контроллера:

public function getData()
    {
     $data['csrf_token_name'] = $this->security->get_csrf_token_name(); // $data has to be passed as second parameter of $this->load->view(..., ....), 
     $data['csrf_token_hash'] = $this->security->get_csrf_hash();

        $table = $this->main_model->data();
        if (count($table) > 0) 
        {
            foreach ($table as $row) 
            {
                $tab = array();
                $tab["name"] = $row->name;
                $tab["last_name"] = $row->last_name;
                $r_tab[] = $tab;                
            }

            $output = array(
                "data" =>  $r_tab
            );

            echo json_encode($output);
        }

Также можно ли опубликовать весь код getData (..)? Вы можете вставить его, если хотите.

Karlo Kokkak 28.05.2018 08:20

HTML

<table id = "myTable" class = "display" style = "width:100%">
    <thead>
        <tr>
            <th>Name</th>
            <th>Last_name</th>
        </tr>
    </thead>
</table>

JQuery

 $('#user_table').DataTable( {

        "ajax": {
            "url": '<?php echo site_url('main/getData'); ?>',
            "type": "POST",
            "data": { '<?php echo $csrf_token_name; ?>' : '<?php echo $csrf_token_hash; ?>' }
        },
    } );

Контроллер

public function getData()
{
    $this->security->get_csrf_token_name();
    $this->security->get_csrf_hash();
    $this->datatables->select('*')
         ->from('table_name')

    echo $this->datatables->generate();
}

Другие вопросы по теме