首页 > 解决方案 > 如何使用 Ajax 从 Controller 获取 DataTable 的数据到 View

问题描述

在我的主控制器中,我有一个从数据库中获取数据、对其进行格式化并将其输出为 JSON 的函数。我现在的问题是如何将这些数据显示到 DataTable。我阅读的大多数示例都将数据保存在与控制器不同的文件中。我希望数据来自控制器中的函数。我如何调用该函数?

查看 (SampleView.php)

<table id="example" class="display" width="100%" cellspacing="0">
  <thead>
    <tr>
      <th>EmpID</th>
      <th>FirstName</th>
      <th>LastName</th>
    </tr>
  </thead>       
</table>
<script type="text/javascript">
  $( document ).ready(function() {  
    var table = $('#example').DataTable( {
                   "ajax": "main/getDataFunction", 
                   // "ajax": "getDataFunction", 
                   // "ajax": "<?php echo base_url()."main/getDataFunction"; ?>",
                   // "ajax": { url: 'main/getDataFunction', type: 'POST' },
                   "bPaginate":true,
                   "bProcessing": true,
                   "pageLength": 10,
                   "columns": [
                     { mData: 'EmpID' } ,
                     { mData: 'FirstName' },
                     { mData: 'LastName' }
                   ]
                 });        
  });
</script>

控制器(Main.php)

function getDataFunction() {
  $sampleData = $this->db->getSampleData();

  $data = array();

  foreach($sampleData as $key) {
    array_push($data, array("EmpID" => $key->empID, 
                            "FirstName" => $key->firstName, 
                            "LastName" => $key->lastName));
  }

  $results = array("sEcho" => 1, 
                   "iTotalRecords" => count($data),
                   "iTotalDisplayRecords" => count($data),
                   "aaData"=>$data);

  echo json_encode($results);
}

echo json_encode($results) 的输出

{"sEcho":1,"iTotalRecords":1,"iTotalDisplayRecords":1,"aaData":[{"EmpID":"1","FirstName":"JOHN","LastName":"DOE"}]}

标签: ajaxcodeigniterdatatable

解决方案


我不确定 DataTable 但您可以做的是您可以使用 eval() 首先评估 json 数据,然后将您的 json 响应值获取到视图中。

我知道的老办法是——</p>

$.ajax(function() { type : 'get', // or 'post', data : {key:value},
dataType : 'json', success : function(response){ var html_data = response.eval() ; // 这将序列化您的数据对象 $('selector').val(html_data.name); // $('selector').val(html_data.sEcho); 根据您的代码输出。 // 或$('选择器').html(html_data); } });


推荐阅读