php - 如何使用 DataTable 和 Codeigniter 创建 ajax 请求以在同一文件中运行和返回
问题描述
我是 Codeigniter 的新手,仍然试图了解它的工作原理,我试图将 ajax 从视图 addHistory 发送到控制器 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);
}
模型应用\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>
.
有关更多详细信息,请阅读此内容。
manageTable = $('#manageTable1').DataTable({
"ajax": {
"url": "<?php echo base_url('drivers/fetchDriversHistory');?>", // This will generate absulote URL
"data": {
"user_id": <?php echo $id ?>
}
},
'order': []
});
希望这对您有所帮助。
推荐阅读
- jquery - jquery.filedrop.js - 初始化后如何更改选项?
- javascript - 为 Meteor twbs:bootstrap 指定一个 jQuery 版本
- documentation - Kubernetes 文档搜索无法正常工作
- vue.js - Vue js嵌入组件的执行方法
- linux - 汇编中单独的 64 位寄存器有什么作用?
- java - Java JDBC SQL 将一个表重写为另一个
- sql - SQL Server BULK INSERT 出错并且没有释放 Sch-M 锁,表不可访问
- python - 我可以让 tensorflow-gpu 与 NVIDIA GeForce MX130 一起工作吗?
- web-crawler - 如何限制stormcrawler中的爬行深度
- python-3.x - Python无法以批处理语言打印变量