Загрузка таблиц с использованием Datatables в Codeigniter - PullRequest
0 голосов
/ 29 апреля 2019

В Codeigniter я загружаю таблицу, используя динамические значения в массиве. В контроллере я загружаю таблицу, используя представление загрузки.

$.ajax({
            type: "POST",
            url: baseUrl + 'reports/getsalary',
            data: data,
            success: function (data) {
                var obj = jQuery.parseJSON(data);
                // console.log(obj);
                if (obj.status == 'error') {
                    $("#reports").html(obj.msg);
                } else {
                  $("#salarylist").DataTable();
                    $("#reports").html(obj.rendered);
                }
            }
        });

В контроллере у меня есть код,

$html= $this->load->view("reports/partial/salaryreport", $data, TRUE);

                $result['status']='success';
                $result['rendered']= "".$html."";   

            echo json_encode($result);
            exit;

Я уже загрузил таблицу с данными. Как я могу преобразовать таблицу в таблицу данных?

1 Ответ

0 голосов
/ 30 апреля 2019

Если вы хотите использовать ajax для заполнения таблицы DataTable, вам нужно будет инициализировать DataTable и следовать их API для правильного получения данных с сервера.Это означает визуализацию ответа json способом, понятным для DataTables.

Вот пример: https://datatables.net/examples/data_sources/server_side

С codeigniter вы можете использовать: https://github.com/IgnitedDatatables/Ignited-Datatables

Еслиу вас есть какие-либо проблемы с настройкой IgnitedDatatables. Здесь много ресурсов в стеке.

Вот краткий пример из моего собственного кода с использованием IgnitedDatatables:

$('#projects').DataTable({
                destroy: true,
                processing: true,
                serverSide: true,
                pageLength: 5,
                lengthMenu: [5, 10, 20, 50, 100],
                autoWidth: false,
                ajax: {
                    url: base_path + 'projects/get_table/' + category,
                    type: 'POST',
                    dataSrc: function (json) {
                        if (typeof json.status !== 'undefined' && json.status == 'error') {
                            toastr.error(json.msg);
                            $('#projects').DataTable().destroy();
                            $('#projects').hide();
                        } else {
                            return json.data;
                        }
                    }
                },
                columns: [
                    {data: 'checkbox', orderable: false, searchable: false},
                    {data: 'name'},
                    {data: 'created'},
                    {data: 'last_modified'},
                    {data: 'actions', orderable: false, searchable: false}
                ]
            });

PHP:

Обратите внимание: я изменил библиотеку IgnitedDatatables для своего собственного кода, поэтому эти методы могут работать не совсем так, как показано ниже для вас при использовании библиотеки по умолчанию.

public function get_table($category = null) {
    if (!$this->input->is_ajax_request()) {
        exit('No direct script access allowed');
    }
    $this->load->library('datatables');
    $this->load->model('backend/datatables_model');
    $this->datatables
            ->select('id, name, s_order, created, created_by, last_modified, last_modified_by, published, media_resource_link')
            ->from('projects')
            ->default_order('s_order', 'DESC')
            ->edit_column('name', array($this->datatables_model, 'callback_info_projects'), 'id, name, media_resource_link')
            ->edit_column('created', array($this->datatables_model, 'callback_created_modified'), 'id, created, created_by')
            ->edit_column('last_modified', array($this->datatables_model, 'callback_created_modified'), 'id, last_modified, last_modified_by')
            ->add_column('actions', array($this->datatables_model, 'callback_actions_projects'), 'id, published');
    if ($this->ion_auth->is_admin()) {
        $this->datatables->add_column('checkbox', '<input name="u[]" type="checkbox" value="%s">', 'id');
    } else {
        $this->datatables->add_column('checkbox', '%s', 's_order');
    }
    if (!is_null($category)) {
        $this->datatables->where('category', $category);
    }
    $this->response->output($this->datatables->generate())->json();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...