【发布时间】:2016-10-31 16:04:14
【问题描述】:
我在这里有一个使用 codeigniter 与数据库连接的数据表。这里的问题是我的数据表没有显示输出。如果通过 ajax 的数据发送到我的控制器,我会检查开发人员工具/网络。任何帮助将不胜感激。
我的控制器
class Person extends MY_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('person_model','person');
}
public function index()
{
$this->load->helper('url');
$this->data['title'] = 'Division';
$this->middle = 'person_view'; // its your view name, change for as per requirement.
$this->layout();
}
public function ajax_list()
{
$list = $this->person->get_datatables();
$data = array();
$no = $_POST['start'];
foreach ($list as $division) {
$no++;
$row = array();
$row[] = $division->division_code;
$row[] = $division->division_name;
$row[] = $division->division_acro;
//add html for action
$row[] = '<a class="btn btn-sm btn-primary" href="javascript:void(0)" title="Edit" onclick="edit_person('."'".$division->id."'".')"><i class="glyphicon glyphicon-pencil"></i> Edit</a>
<a class="btn btn-sm btn-danger" href="javascript:void(0)" title="Hapus" onclick="delete_person('."'".$division->id."'".')"><i class="glyphicon glyphicon-trash"></i> Delete</a>';
$data[] = $row;
}
$output = array(
"draw" => $_POST['draw'],
"recordsTotal" => $this->person->count_all(),
"recordsFiltered" => $this->person->count_filtered(),
"data" => $data,
);
//output to json format
echo json_encode($output);
}
}
我的模特
class Person_model extends CI_Model {
var $table = 'division';
var $column_order = array('division_code','division_name','division_acro','division_date',null); //set column field database for datatable orderable
var $column_search = array('division_code','division_name','division_acro'); //set column field database for datatable searchable just firstname , lastname , address are searchable
var $order = array('id' => 'desc'); // default order
public function __construct()
{
parent::__construct();
$this->load->database();
}
private function _get_datatables_query()
{
$this->db->from($this->table);
$i = 0;
foreach ($this->column_search as $item) // loop column
{
if($_POST['search']['value']) // if datatable send POST for search
{
if($i===0) // first loop
{
$this->db->group_start(); // open bracket. query Where with OR clause better with bracket. because maybe can combine with other WHERE with AND.
$this->db->like($item, $_POST['search']['value']);
}
else
{
$this->db->or_like($item, $_POST['search']['value']);
}
if(count($this->column_search) - 1 == $i) //last loop
$this->db->group_end(); //close bracket
}
$i++;
}
if(isset($_POST['order'])) // here order processing
{
$this->db->order_by($this->column_order[$_POST['order']['0']['column']], $_POST['order']['0']['dir']);
}
else if(isset($this->order))
{
$order = $this->order;
$this->db->order_by(key($order), $order[key($order)]);
}
}
function get_datatables()
{
$this->_get_datatables_query();
if($_POST['length'] != -1)
$this->db->limit($_POST['length'], $_POST['start']);
$query = $this->db->get();
return $query->result();
}
function count_filtered()
{
$this->_get_datatables_query();
$query = $this->db->get();
return $query->num_rows();
}
public function count_all()
{
$this->db->from($this->table);
return $this->db->count_all_results();
}
我的视图脚本
<script type="text/javascript">
var save_method; //for save method string
var table;
$(document).ready(function() {
//datatables
table = $('#table').DataTable({
"processing": true, //Feature control the processing indicator.
"serverSide": true, //Feature control DataTables' server-side processing mode.
"order": [], //Initial no order.
// Load data for the table's content from an Ajax source
"ajax": {
"url": "<?php echo ('person/ajax_list')?>",
"type": "POST"
},
//Set column definition initialisation properties.
"columnDefs": [
{
"targets": [ -1 ], //last column
"orderable": false, //set not orderable
},
],
});
});
</script>
【问题讨论】:
-
您在 ajax 调用中得到什么响应?
-
在开发者工具的网络选项卡中查看响应。控制器可能在 JSON 之前或之后打印某些内容,您需要修复它。
-
@RajJagani 我就像这样在我的数据库中获取数据。 - "draw":"1","recordsTotal":43,"recordsFiltered":43,"data":[["div-043","Division","D"," 等等。
-
@Barmar 只是想问问。我正在使用 codeigniter my_controller。我有我的布局资产。如果是触发错误的问题之一?我应该在我的路由器或自动加载等中更改什么。
-
您使用的是哪个数据表版本?我有 Datatable 版本 1.10.9 的完整代码。如果您使用的是 1.X.X,那么我可以输入该代码。
标签: jquery json codeigniter datatable datatables