如何创建ajax请求以使用DataTable和Codeigniter并在同一文件中返回
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何创建ajax请求以使用DataTable和Codeigniter并在同一文件中返回相关的知识,希望对你有一定的参考价值。
我是Codeigniter的新手,仍在尝试了解其工作原理,我正在尝试从视图addHistory将ajax发送到控制器Drivers.php中的函数fetchDriversHistory但我没有得到回应,出现错误
DataTables warning: table id=manageTable1 - Invalid JSON response
由于某种原因,当我检查请求的响应是页面的返回html格式时,在浏览器->网络中
我有用于初始化数据表的文件application views drivers addHistory.php
manageTable = $('#manageTable1').DataTable({
"ajax": {
"url": "fetchDriversHistory",
"data": {
"user_id": <?php echo $id ?>
}
},
'order': []
});
在application controllers Drivers.php中,找到fetchDriversHistory
public function fetchDriversHistory()
{
$result = array('data' => array());
$data = $this->model_drivers->fetchDriversHistory($id);
foreach ($data as $key => $value) {
$result['data'][$key] = array(
$value['date_added'],
$value['daily_rate'],
$value['dayoff']
);
}
echo json_encode($result);
}
型号application models Model_drivers.php
public function fetchDriversHistory($id = null)
{
$sql = "SELECT driver_id, daily_date, dayoff, date_added FROM addDriverHistory where id = ?";
$query = $this->db->query($sql, array($id));
return $query->result_array();
}
答案
您在javascript中定义的URL错误。默认情况下,您需要将URL定义为https//:<domain.com>/<controller>/<method>/<arguments>
。
更多详细信息read this。>>
manageTable = $('#manageTable1').DataTable({
"ajax": {
"url": "<?php echo base_url('drivers/fetchDriversHistory');?>", // This will generate absulote URL
"data": {
"user_id": <?php echo $id ?>
}
},
'order': []
});
另一答案
您的URL错误,您应该:
"url": "<?= base_url("your_controller_name/fetchDriversHistory") ?>"
以上是关于如何创建ajax请求以使用DataTable和Codeigniter并在同一文件中返回的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Datatable 以 POST 类型传递请求正文数据以使用 Javascript 进行服务器端分页