Php dataTAble:重新加载不工作,json无效?
我正在使用dataTable的最新版本 我通过ajax请求删除一行,如下所示:Php dataTAble:重新加载不工作,json无效?,php,jquery,ajax,datatables,Php,Jquery,Ajax,Datatables,我正在使用dataTable的最新版本 我通过ajax请求删除一行,如下所示: $.ajax ( { method : 'POST', //la route (controleur) et le paramètre (id à supprimer) url: url + "/professionnels
$.ajax
(
{
method : 'POST',
//la route (controleur) et le paramètre (id à supprimer)
url: url + "/professionnels/deleteProfessionnels/"+id_to_delete,
dataType: 'json',
success:function()
{
//console.log(retour);
$('#example').DataTable().ajax.reload();
PHP模型代码:
public function deleteProfessionnel($pro_id)
{
$sql = "DELETE FROM professionnels WHERE id = :pro_id";
$query = $this->db->prepare($sql);
$parameters = array(':pro_id' => $pro_id);
// useful for debugging: you can see the SQL behind above construction by using:
//echo '[ PDO DEBUG ]: ' . Helper::debugPDO($sql, $parameters); exit();
$query->execute($parameters);
}
PHP控制器代码:
我实现了ajax的成功功能,但我得到了以下信息:
DataTables警告:表id=示例-JSON响应无效。有关此错误的详细信息,请参阅
当我使用测试json结果时,出现了错误
1-为什么php返回无效的json对象?
2-我必须做所有这些来重新加载表吗
这是json对象中的响应:
{"0":{"id":"123","nom":"G\u00e9om\u00e8tre","prenom":"Barack","adresse":null,"numero":null,"boite":null
,"cp":null,"ville":null,"mail":null,"telephone":null,"inami":null,"tva":null,"disponibilite":null,"commentaire"
:null},"1":{"id":"128","nom":"G\u00e9om\u00e8tre-expert","prenom":"Barack","adresse":null,"numero":"6"
,"boite":"3","cp":"1300","ville":"Bruxelles","mail":"contact@dubinfo.be","telephone":"0471301253","inami"
:"5533434343","tva":"BE 0832.581.586","disponibilite":null,"commentaire":null}}
您可以尝试以下代码:
public function getCoursesForDatatable(){
$table = 'courses';
$primaryKey = 'course_id';
$columns = array(
array( 'db' => 'course_name', 'dt' => 0 ),
array( 'db' => 'course_short_description', 'dt' => 1 ),
array( 'db' => 'course_is_active', 'dt' => 2 ),
array( 'db' => 'course_added_at', 'dt' => 3 ),
array( 'db' => 'course_public_id', 'dt' => 4 )
);
// $join_where = "JOIN investors ON course_applications.course_user_id = investors.investor_id";
$arr = $this->datatable_model->get_rows( $_GET, $table, $primaryKey, $columns );
$ret = $this->formatArticleData($arr['data']['info']);
$a = array(
"draw" => $arr['draw'],
"recordsTotal" => $arr['recordsFiltered'],
"recordsFiltered" => $arr['recordsFiltered'],
"data" => $ret
);
echo json_encode($a);
}
public function formatArticleData($data){
if(!empty($data)){
$res = "";
foreach ($data as $key => $value){
$res[] = array(
$value['course_name'],
$value['course_short_description'],
( $value['course_is_active'] == 1 ? "Active" : "Inactive" ),
date("d-M-Y", strtotime($value['course_added_at'])),
'<a class="ui button mini app-button " href="' . base_url('courses/edit') . '/' . $value['course_public_id'] .'">Edit</a>'
);
}
return $res;
}else{
return "";
}
}
请先在浏览器中检查您在ajax中使用的url是否得到了有效的响应?我多次尝试显示返回,暂时没有成功。感谢您的回复,{0:{id:123,nom:G\u00e9om\u00e8tre,prenom:Barack,address:null,numero:null,boite:null,cp:null,ville:null,mail:null,telephone:null,inami:null,tva:null,disponibilite:null,commentaire:null},1:{id:128,nom:G\u00e9om\u00e8tre专家,prenom:Barack,address:null,numero:6,boite:3,cp:1300,ville:Bruxelles,邮件:contact@dubinfo.be,电话:0471301253,inami:5533434343,tva:BE 0832.571.586,disponibilite:null,commentaire:null}您从服务器返回的数据的格式与datatables所需的格式不同。以下是我的服务器中的示例数据{draw:1,recordsTotal:3,recordsFiltered:3,data:[[Angular JS,这是Angular JS课程的简短描述,活动,2017年4月5日,编辑],[Computer Programming,这是简短的描述,活动,2017年4月5日,编辑],[医疗保健,这是一个医疗保健计划,非活动,2017年4月8日,编辑]]我收到太多类型错误:ajax为空我已更新了我的答案。请在从服务器回显之前尝试使用此代码格式化数据。
public function getCoursesForDatatable(){
$table = 'courses';
$primaryKey = 'course_id';
$columns = array(
array( 'db' => 'course_name', 'dt' => 0 ),
array( 'db' => 'course_short_description', 'dt' => 1 ),
array( 'db' => 'course_is_active', 'dt' => 2 ),
array( 'db' => 'course_added_at', 'dt' => 3 ),
array( 'db' => 'course_public_id', 'dt' => 4 )
);
// $join_where = "JOIN investors ON course_applications.course_user_id = investors.investor_id";
$arr = $this->datatable_model->get_rows( $_GET, $table, $primaryKey, $columns );
$ret = $this->formatArticleData($arr['data']['info']);
$a = array(
"draw" => $arr['draw'],
"recordsTotal" => $arr['recordsFiltered'],
"recordsFiltered" => $arr['recordsFiltered'],
"data" => $ret
);
echo json_encode($a);
}
public function formatArticleData($data){
if(!empty($data)){
$res = "";
foreach ($data as $key => $value){
$res[] = array(
$value['course_name'],
$value['course_short_description'],
( $value['course_is_active'] == 1 ? "Active" : "Inactive" ),
date("d-M-Y", strtotime($value['course_added_at'])),
'<a class="ui button mini app-button " href="' . base_url('courses/edit') . '/' . $value['course_public_id'] .'">Edit</a>'
);
}
return $res;
}else{
return "";
}
}