Javascript DataTables警告:当表中没有记录时,JSON响应无效。还添加了空数组,但未显示记录

Javascript DataTables警告:当表中没有记录时,JSON响应无效。还添加了空数组,但未显示记录,javascript,jquery,html,datatables,codeigniter-3,Javascript,Jquery,Html,Datatables,Codeigniter 3,我使用CodeIgniter和引导数据表来显示数据库中的记录 当表中没有可用的记录时,我得到了错误 DataTables警告:表id=员工列表-JSON响应无效。 有关此错误的详细信息,请参阅 记录在表中可用时显示 (注意:如果我在模型中添加了0的空数组,则我的错误为,但数据库中没有显示记录。) 我试图找到解决方案,但没有一个解决方案对我有效。谁能帮我一下我的代码有什么问题吗 我的密码是 脚本 $('#employee-List').DataTable({ language: {

我使用CodeIgniter和引导数据表来显示数据库中的记录

当表中没有可用的记录时,我得到了错误

DataTables警告:表id=员工列表-JSON响应无效。 有关此错误的详细信息,请参阅

记录在表中可用时显示

注意:如果我在模型中添加了0的空数组,则我的错误为,但数据库中没有显示记录。)

我试图找到解决方案,但没有一个解决方案对我有效。谁能帮我一下我的代码有什么问题吗

我的密码是

脚本

$('#employee-List').DataTable({
  language: {
    sLengthMenu: "Show _MENU_", // remove entries text
    searchPlaceholder: "Search",
    emptyTable: "No record found",
    search: ""
  },
  "ordering": false, // remove sorting effect from header 
  "processing": true,
  "serverSide": true,
  "scrollX": true,
  "bInfo": false,
  "pageLength": 10,
  "ajax": {
    "url": baseUrl + "/Employee_control/fetch_employeeList",
    "type": "POST"
  },
  "columns": [{
      "data": "id",
      "className": "reg_bg"
    },
    {
      "data": "name"
    },
    {
      "data": "email"
    },
    {
      "data": "mobileno"
    },
    {
      "data": "emp_id"
    },
    {
      "data": "address"
    },
    {
      "data": "action"
    }
  ]

});
控制器

public function fetch_employeeList(){
  $order_list=$this->Employee_model->fetch_employeeList();

// Datatables Variables
$draw = intval($this->input->get("draw"));
$start = intval($this->input->get("start"));
$length = intval($this->input->get("length"));

$data['draw'] = 1;
$data['recordsTotal'] = count($order_list);
$data['recordsFiltered'] = count($order_list);
foreach ($order_list as $key => $row) 
{
$action='<a href="" class="action-btn action-btn-border">View</a><a href="" class="action-btn action-btn-red-bg">Archive</a>';
$arr_result = array(
            "id" =>$row->id,
            "name" => $row->firstname." ".$row->middlename." ".$row->lastname,
            "email" => $row->email_id,
            "mobileno" => $row->mobileno,
            "emp_id" => $row->employee_id,
            "address" => $row->address,
            "action" => $action
);

$data['data'][] = $arr_result;

}
//print_r($arr_result);
echo json_encode($data);
exit;
}

问题在于,控制器返回的JSON响应需要始终包含名为
data
的属性,并且按照在控制器中编写代码的方式,只有在有结果时才在响应数组中设置
data
属性

在控制器中,需要将
$data['data']
默认为空数组,如下所示:

$data['draw']=1;
$data['recordsTotal']=计数($order_list);
$data['recordsFiltered']=计数($order_list);
$data['data']=[];//在控制器中添加此行
有关更多信息,请参阅(向下滚动至返回数据部分)

更新

在模型方法中,当没有结果时,应始终返回数组,而不是返回
0
。查看codeigniter的文档,如果没有结果,
$query->getResult()
将返回一个空数组,因此您可以将模型方法更新为:

公共函数fetch_employeeList(){
$this->db->select('*');
$this->db->from('tbl_employee');
$query=$this->db->get();
返回$query->result();
}

假设您从db中的空记录开始,假定只有在db中没有记录时才返回空数组(您不需要在此处显示某些内容)。否则,您需要
redraw
您的
datatable
来获取新添加的记录。@Royts,是的,我启动空记录。我添加了所有的数据表插件。如果数据库中没有记录,则应显示“未找到记录”。如果记录可用,则该记录应显示在数据表中。这就是我正在尝试的场景。我尝试了一个空数组,因为我找到了一个在模型中使用空数组的答案。使用空数组我的错误是,但记录不显示。空数组仅在
没有记录可显示时使用,否则,返回从查询中获得的记录。是的,这是正确的。如果没有记录,则空数组将调用,否则它将调用If查询输出。你能检查一下我的代码吗?我的代码有问题吗?@questionbank注意我没有测试这个,所以你的代码中可能还有其他问题。但是您肯定需要确保在响应中始终返回
data
属性,这就是您看到无效JSON响应的原因;但是,它还是给了我DataTables警告:table id=uploadedLead list-无效的JSON响应。有关此错误的更多信息,请查看是否没有记录扫描您是否将原始JSON响应添加到您的问题?当前我的表完全为空,在网络选项卡响应中,我收到错误消息:count():参数必须是数组或实现可计数的对象如果没有结果,模型是否仍返回空数组?查看错误日志或网络选项卡响应中的错误,以查看错误来自哪个文件和行号,但这是一个PHP错误,而不是DataTables错误。我猜它来自countrol,当你做
count($order\u list)
public function fetch_employeeList(){
        $this->db->select('*');
      $this->db->from('tbl_employee');

        $query = $this->db->get();
        $result = $query->result();
        if($result)
      {
          return $result;
      }
      else{
          return []; //I added empty array instated of 0. Using this my error goes of but records are not displaying from the database.
      }
    }