Если вы хотите использовать 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();
}