2015-09-23 5 views
2

Я использую Ignited Datatables для отображения сообщений в табличном виде на мой взгляд. Я занимаюсь последние 4 дня, чтобы сделать это правильно, но я не понимаю, что я делаю неправильно.Ignited Datatables - отображать записи на экране

Это функциональность, которая извлекает данные

// the Post_model 
/** 
* Get page data on datatables 
*/ 
public function get_datatable() { 

    $this->load->library('datatables'); 

    $this->datatables->select('id, title, slug, sort_description, status'); 
    $this->datatables->from('posts'); 
    return $this->datatables->generate(); 
} 

// the posts controller 
/** 
* List all posts 
*/ 
public function index() { 

    $this->data['datatables'] = true; 

    $this->data['data_url'] = 'admin/posts/data_ajax'; 
    // $this->data['posts'] = $this->post_model->get_datatable(); 
    // dump($this->data['pages']); 

    // load view 
    $this->load->view('admin/posts/index', $this->data); 
} 


public function data_ajax() { 
    $this->output->enable_profiler(false); 
    echo $this->post_model->get_datatable(); 
    // echo json_encode($this->post_model->get_datatable()); 
    exit(); 
} 

// the view 
    <table class="table dataTable table-bordered" cellspacing="0" width="100%"> 
    <thead> 
     <tr> 
     <th>ID</th> 
     <th>Title</th> 
     <th>Url Slug</th> 
     <th>Sort Description</th> 
     <th>Status</th> 
     </tr> 
    </thead> 

    <tfoot> 
     <tr> 
     <th>ID</th> 
     <th>Title</th> 
     <th>Url Slug</th> 
     <th>Sort Description</th> 
     <th>Status</th> 
     </tr> 
    </tfoot> 

    <!-- <tbody> 
     <tr> 
     <td colspan="5" class="dataTables_empty"></td> 
     </tr> 
    </tbody> --> 
</table> 

<?php if(isset($datatables)): ?> 
    <?php echo js_tag('js/dataTables/jquery.dataTables.min.js'); ?> 
    <?php echo js_tag('js/dataTables/dataTables.bootstrap.min.js'); ?> 

    <script type="text/javascript"> 
     $(document).ready(function() { 
      $('.dataTable').DataTable({ 
       'bProcessing' : true, 
       'bServerSide' : true, 
       'sAjaxSource' : '<?php echo base_url($data_url); ?>', 
       'sServerMethod' : 'POST', 
       'fnServerData' : function (sSource, aoData, fnCallback) { 
        $.ajax({ 
         dataType : 'json', 
         type : 'post', 
         url : sSource, 
         data : aoData, 
         success : fnCallback, 
         "columns": [ 
          { "data": "id" }, 
          { "data": "title" }, 
          { "data": "slug" }, 
          { "data": "sort_description" }, 
          { "data": "status" } 
         ] 
        }); 
       } 
      }); 
     }); 
    </script> 
<?php endif; ?> 

Так что, если я получить доступ к функции data_ajax() из URL, как этот localhost/my-blog/admin/posts/data_ajax и эхо echo $this->page->get_datatable(); я могу записи

{"draw":0,"recordsTotal":2,"recordsFiltered":2,"data":[{"id":"1","title":"First post","slug":"first-post","sort_description":"This is the first post","status":"visible"},{"id":"2","title":"Second post","slug":"second-post","sort_description":"This is the second post","status":"visible"}]} 

но проблема в том, что я не могу отображать их на своем экране. Кроме того, я также получить это предупреждение в окне предупреждения

DataTables warning: table id=DataTables_Table_0 - Requested unknown parameter '0' for row 0. For more information about this error, please see http://datatables.net/tn/4

Это скриншот того, что я получаю enter image description here

Как я могу сделать эту работу должным образом? Любая помощь будет оценена

+0

проверить отсутствие столбцов в ответе на запрос из запросов и таблиц html –

+0

Боюсь, что я вас не понял. Не могли бы вы объяснить подробнее? – Lykos

+0

ваш ответ json с 5 столбцами и html-таблицей, имеющей 6 столбцов , делает их правильными, чтобы получить отображение отображения. –

ответ

1

Пожалуйста, попробуйте этот параметр

Добавить столбцы, чтобы связать данные с колонкой

Код будет что-то вроде этого

$('.dataTable').DataTable({ 
    'bProcessing' : true, 
    'bServerSide' : true, 
    'sAjaxSource' : '<?php echo base_url($data_url); ?>', 
    'sServerMethod' : 'POST', 
    "columns": [ 
      { "data": "id" }, 
      { "data": "title" }, 
      { "data": "slug" }, 
      { "data": "date_published" }, 
      { "data": "status" } 
     ] 
    'fnServerData' : function (sSource, aoData, fnCallback) { 
     $.ajax({ 
      dataType : 'json', 
      type : 'post', 
      url : sSource, 
      data : aoData, 
      success : fnCallback, 
    }); 
    } 
}); 

Пожалуйста, обратитесь datatables column, для получения более подробной информации

+0

Что вы подразумеваете под 'refer [колонка данных] [1], для деталей' ?? – Lykos

+0

Это ссылка на параметр столбцов datatables, некоторые исправления были там, исправлены. Надеюсь, это поможет. – Ravneet

+0

все еще не повезло .. Я до сих пор получаю предупреждение, а также не могу отображать записи. Я собираюсь обновить код для просмотра и дать вам снимок экрана. – Lykos

0

У меня была схожая проблема. Вот как я это решил: Вы должны установить столбцы этой

"columns": [null, null, null, null, null,{}] 

установить его отдельно не в Ajax.

Смежные вопросы