首页 > 解决方案 > 如何使用 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();
}

标签: phpjqueryajaxcodeigniterdatatable

解决方案


您在 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': []
   });

希望这对您有所帮助。


推荐阅读