我想从数据库中获取信息,并将其显示在CodeIngniter 3上的Datatables和JQuery选项卡中。我的视图中的表:
<table id="myTable" class="display" style="width:100%">
<thead>
<tr>
<th>Name</th>
<th>Last_name</th>
</tr>
</thead>
</table>
我的js脚本:
$(document).ready(function(){
$('#myTable').DataTable( {
"processing": true,
"serverSide": true,
"order":[],
"ajax": {
"url": '<?= base_url('main/getData');?>',
"type": "POST",
"data": { '<?php echo $csrf_token_name; ?>' : '<?php echo $csrf_token_hash; ?>' }
},
});
})
我的控制器方法:
public function getData()
{
$this->security->get_csrf_token_name();
$this->security->get_csrf_hash();
$table = $this->main_model->data();
if (count($table) > 0)
{
foreach ($table as $row)
{
$tab = array();
$tab["name"] = $row->name;
$tab["last_name"] = $row->last_name;
$r_tab[] = $tab;
}
echo json_encode($r_tab);
}
非常感谢:)
发布于 2018-05-28 09:13:18
您必须将columns
选项添加到数据表代码中,才能正确显示远程数据。
$(document).ready(function(){
$('#myTable').DataTable( {
"processing": true,
"serverSide": false,
"order":[],
"ajax": {
"url": '<?php echo site_url('main/getData'); ?>',
"type": "POST",
"data": { '<?php echo $csrf_token_name; ?>' : '<?php echo $csrf_token_hash; ?>' }
},
'columns': [
{ "data": "name", "name": "name"},
{ "data": "last_name", "name": "last_name"},
]
});
});
在您的控制器方法中,您的JSON响应结构不正确。您需要将记录添加到输出数组的“data”元素中。
更新的控制器方法:
public function getData()
{
$data['csrf_token_name'] = $this->security->get_csrf_token_name(); // $data has to be passed as second parameter of $this->load->view(..., ....),
$data['csrf_token_hash'] = $this->security->get_csrf_hash();
$table = $this->main_model->data();
if (count($table) > 0)
{
foreach ($table as $row)
{
$tab = array();
$tab["name"] = $row->name;
$tab["last_name"] = $row->last_name;
$r_tab[] = $tab;
}
$output = array(
"data" => $r_tab
);
echo json_encode($output);
}
发布于 2018-05-28 18:02:58
HTML
<table id="myTable" class="display" style="width:100%">
<thead>
<tr>
<th>Name</th>
<th>Last_name</th>
</tr>
</thead>
</table>
JQuery
$('#user_table').DataTable( {
"ajax": {
"url": '<?php echo site_url('main/getData'); ?>',
"type": "POST",
"data": { '<?php echo $csrf_token_name; ?>' : '<?php echo $csrf_token_hash; ?>' }
},
} );
控制器
public function getData()
{
$this->security->get_csrf_token_name();
$this->security->get_csrf_hash();
$this->datatables->select('*')
->from('table_name')
echo $this->datatables->generate();
}
https://stackoverflow.com/questions/50556660
复制相似问题