Php dataTAble:重新加载不工作,json无效?

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

我正在使用dataTable的最新版本

我通过ajax请求删除一行,如下所示:

$.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 "";
    }
}