如何创建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 进行服务器端分页

如何在 Ajax 请求中发送当前页码

使用新参数重新加载 Ajax 请求

ajax如何请求python接口

将参数传递给 AJAX 以绑定 DataTable 不起作用

p:datatable 在 ajax 刷新后丢失排序列和顺序