Проблемы с передачей Ajax результата в таблицу Codeigniter - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь получить данные таблицы в мою таблицу просмотра , используя Codeigniter и AJAX jQuery.

Ну, я использую функция готовности документа для получения данных вместо передачи данных таблицы при вызове представления на контроллере.

Ajax функция

$( document ).ready(function() {
    $.ajax({
        type : "POST",
        url  : "<?php echo base_url(); ?>CRUD_Controller/crud_getDataAll/nivel",
        cache: false,
        contentType: false, 
        processData: false,
        dataType: 'html',
        success: function(data) {
            alert("sucesso - " + data);
            $('#example1').html(data);
        },
        error: function() {
            alert('Algo falhou, nao caregou a tabela. - ' + data);
        }
    });
});

Контроллер Метод

public function crud_getDataAll($table_name)
{
    $data = $this->Administracao_model->getAllData($table_name);
    echo json_encode($data);
}

Метод модели

function getAllData($table_name)
{
    $this->db->select('*');
    $query = $this->db->get($table_name);
    return $query->result();
}

Просмотр таблицы

<table id="example1" class="table table-sm table-bordered table-striped Responsive">
    <thead>
        <tr>
           <th class="text-center">ID</th>
           <th class="text-center">Nome</th>
           <th class="text-center">Ações Permissíveis</th>
           <th class="text-center">Ação</th>
        </tr>
        </thead>
            <tbody>
                <?php if($data){ foreach($data as $row) { ?>
                   <tr>
                      <td class="align-middle text-center">
                         <a href="#"><?php echo $row->id;?></a>
                      </td>
                      <td class="align-middle text-center">
                         <span class="badge <?php echo $row->classes; ?>">
                            <?php echo $row->none;?>
                         </span>
                      </td>
                         <?php $ad = $row->adicionar; $el = $row->eliminar; $al = $row->alterar; $pe = $row->pesquisar; ?>
                      <td>
                         <?php echo $ad .", ". $el . ", ". $al . ", " . $pe; ?>
                      </td>

                    </tr>
                <?php } } ?>
            </tbody>
            <tfoot>
               <tr>
                 <th>ID</th>
                 <th>Amostra</th>
                 <th>Ações Permissíveis</th>
                 <th>Ação</th>
                </tr>
            </tfoot>
    </table>

Есть ли что-то что я делаю не так? Заранее спасибо.

Php ошибка:

Severity: Notice

Message: Undefined variable: data

EDITED вывод эха json_encode ($ data );

[
    {
        "id": "1",
        "nome": "Nivel 0",
        "classe": "badge-admin-0",
        "adicionar": "1",
        "remover": "1",
        "alterar": "1",
        "pesquisar": "1"
    },
    {
        "id": "2",
        "nome": "Teste",
        "classe": "badge-danger",
        "adicionar": "1",
        "remover": "0",
        "alterar": "0",
        "pesquisar": "0"
    }
]

1 Ответ

3 голосов
/ 09 апреля 2020

В основном у вас есть 2 варианта здесь. Прежде всего, если вы не передаете $data в таблицу HTML, удалите коды PHP:

<table id="example1" class="table table-sm table-bordered table-striped table-responsive">
    <thead>
        <tr>
           <th class="text-center">ID</th>
           <th class="text-center">Nome</th>
           <th class="text-center">Ações Permissíveis</th>
           <th class="text-center">Ação</th>
        </tr>
    </thead>
    <tbody></tbody>
    <tfoot>
        <tr>
            <th>ID</th>
            <th>Amostra</th>
            <th>Ações Permissíveis</th>
            <th>Ação</th>
        </tr>
    </tfoot>
</table>

, но если вы передаете данные, оставьте все как есть.

Опция 1: Вывод данных в виде HTML

$( document ).ready(function() {
    $.ajax({
        type : 'POST',
        url  : "<?= base_url(); ?>CRUD_Controller/crud_getDataAll/nivel",
        cache: false,
        processData: false,
        dataType: 'html',
        success: function(data) {
            $('#example1 tbody').html(data);
        },
        error: function(xhr) {
            alert('Algo falhou, nao caregou a tabela. - ' + xhr.statusText);
        }
    });
});

Затем в вашем контроллере вывод данных в виде HTML:

public function crud_getDataAll($table_name)
{
    $rows = $this->Administracao_model->getAllData($table_name);

    foreach($rows as $row) {
        echo '<tr>';
        echo '<td class="align-middle text-center"><a href="#">' . $row->id . '</a></td>';
        echo '<td class="align-middle text-center"><span class="badge ' . $row->classe . '">' . $row->nome . '</span></td>';
        echo '<td>' . $row->adicionar . ', ' . $row->eliminar . ', ' . $row->alterar . ', ' . $row->pesquisar . '</td>';
        echo '</tr>';
    }
}

Опция 2: Вывод данные как JSON

Просто обновите ваш AJAX обратный вызов:

$( document ).ready(function() {
    $.ajax({
        type : 'POST',
        url  : "<?= base_url(); ?>CRUD_Controller/crud_getDataAll/nivel",
        cache: false,
        processData: false,
        dataType: 'json',
        success: function(rows) {
            if (rows) {
                rows.forEach(function(row) {
                    $('#example1 tbody').append(`<tr><td class="align-middle text-center"><a href="#">${row.id}</a></td><td class="align-middle text-center"><span class="badge ${row.classe}">${row.nome}</td><td>${row.adicionar}, ${row.eliminar}, ${row.alterar}, ${row.pesquisar}</td></tr>`);
                });
            }
        },
        error: function(xhr) {
            alert('Algo falhou, nao caregou a tabela. - ' + xhr.statusText);
        }
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...