javascript - DataTables 警告:当表中没有记录时 JSON 响应无效
问题描述
我正在使用 CodeIgniter 和引导数据表来显示数据库中的记录。
当表中没有可用记录时,我收到错误消息。
DataTables 警告:表 id=employee-List - JSON 响应无效。有关此错误的更多信息,请参阅 http://datatables.net/tn/1
记录在表中可用时显示。
我试图找出关于 SO 的解决方案,但没有一个解决方案对我有用。有人可以帮助我我的代码有什么问题吗?
我尝试了@BlueWater86 的回答,错误消失了,但我的记录没有显示。
你能帮我解决这个问题吗?
我的代码是,
脚本
$('#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",
"dataSrc": ""
},
"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;
}
模型
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 0;
}
}
解决方案
在静态类型语言中不会遇到这种问题。如果考虑fetch_employeeList()
函数的接口,它返回一个动态的;有时是对象数组,有时是数字 0。
在没有员工查询结果的情况下,您应该返回一个空数组而不是数字 0。
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 [];
}
}
推荐阅读
- javascript - 如何在另一个页面中访问 Layout.cshtml 中存在的元素
- c# - vba 中的 .NET 库类 - 多级域对象
- php - 如何在 Linux 版本 3.10.0 kbuilder.dev.centos.org 上安装 PHP 7.3 (Red Hat 4.8.5-11)
- c++ - libcurl : 显示正在运行的上传和下载速率
- mysql - 使用多个 where 子句从 table1 中获取所有行并且在 table2 中不存在
- python - 在 reportlab 生成的 PDF 中未正确呈现印地语字体
- java - java.lang.NoSuchMethodError: org.apache.poi.util.POILogger.log(ILjava/lang/Object;Ljava/lang/Throwable;)V
- php - 在模态中传递一个值以删除记录
- javascript - Selenium - 如何从 div 发送输入 > 按 id 输入?
- .htaccess - htaccess 301 重定向中的编码 URL (mod_rewrite)