Неверный ответ JSON, если в базе данных нет записей - PullRequest
0 голосов
/ 08 января 2019

Я использую CodeIgniter и таблицу данных. Я могу отображать записи из базы данных в списке, когда записи доступны. но когда нет доступных записей, я получаю сообщение об ошибке JSON.

Предупреждение DataTables: table id = tableId - Неверный ответ JSON. Для получения дополнительной информации об этой ошибке см. http://datatables.net/tn/1

Я попробовал свой код

Контроллер

public function MembershipList(){
    $draw = intval($this->input->get("draw"));
    $start = intval($this->input->get("start"));
    $length = intval($this->input->get("length"));
    $books=$this->Fees_model->MembershipList();

    $draw = 1;
    $recordsTotal = count($books);
    $recordsFiltered = count($books);
    $n=1;
    $data = array();
    if(!empty($books)){
           foreach($books as $row)  
           {  
               $action='<button type="button" name="update" id="'.$row->clubMembershipFees_id.'" class="btn btn-warning btn-xs update">Edit</button>';

                $data[] = array(
                     "Sr_No" => $n,
                    "Duration" => $row->Duration,
                    "PrimaryMember" => $row->PrimaryMember,
                    "action" => $action
                    );
            $n++;  
          }
    }

    else{
        echo "no data available";
    }
 $output = array(
               "draw" => $draw,
              "recordsTotal" => $recordsTotal,
               "recordsFiltered" =>$recordsFiltered,
              "data" => $data
           );
           echo json_encode($output); 
            exit;

  }

Аякс

$('#Membershiplist').DataTable({  
       "processing":true,  
       //"serverSide":true,  
       "ordering": false, 

       "ajax":{  
            url:baseUrl+ "/controller_one/MembershipList",  
            type:"POST",
            dataSrc: function (json) {
              return json;
            }
       },  
       "columns": [
                {"data":"Sr_No"},
                { "data": "Duration" },
                { "data": "PrimaryMember" },
                { "data": "action" }

          ]
       //"emptyTable":     "No record found",
  });

Можете ли вы помочь мне, где я не прав? Я получаю ответ на вкладке сети "no data available{"draw":1,"recordsTotal":1,"recordsFiltered":1,"data":[]}"

После предложения @Shashidhara

console.log(json); output


{…}
​
data: (1) […]
​​
0: {…}
​​​
Sr_No: 1
action: "<button type=\"button\" name=\"update\" id=\"1\" class=\"btn btn-warning btn-xs update\">Edit</button>"
Duration: "2019-2020"
PrimaryMember: "100"

<prototype>: Object { … }
​​
length: 1
​​
<prototype>: Array []
​
draw: 1
​
recordsFiltered: 1
​
recordsTotal: 1

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Есть несколько проблем с вашим кодом:

Вы включили режим обработки на сервере с помощью «serverSide»: true, но вместо этого ваши данные отформатированы для режима обработки на стороне клиента. Удалите "serverSide": true, чтобы использовать режим обработки на стороне клиента.

Вам необходимо использовать приведенный ниже код dataSrc: "", чтобы соответствовать вашему формату данных JSON, для получения дополнительной информации см. DataSrc.

"ajax" : {
    "url" : "ListAllUserServlet",
    "type" : "POST",
    "dataSrc": ""
},
0 голосов
/ 08 января 2019

Это должно работать.

public function MembershipList(){
    $draw = intval($this->input->get("draw"));
    $start = intval($this->input->get("start"));
    $length = intval($this->input->get("length"));
    $books=$this->Fees_model->MembershipList();

    $draw = 1;
    $recordsTotal = count($books);
    $recordsFiltered = count($books);
    $n=1;
    $data = array();
    if(!empty($books)){
           foreach($books as $row)  
           {  
               $action='<button type="button" name="update" id="'.$row->clubMembershipFees_id.'" class="btn btn-warning btn-xs update">Edit</button>';

                $data[] = array(
                     "Sr_No" => $n,
                    "Duration" => $row->Duration,
                    "PrimaryMember" => $row->PrimaryMember,
                    "action" => $action
                    );
            $n++;  
          }
    }  

    $output = array(
               "draw" => $draw,
              "recordsTotal" => $recordsTotal,
               "recordsFiltered" =>$recordsFiltered,
              "data" => $data
           );
    echo json_encode($output); 

  }

Javascript:

dataSrc: function (json) {
     var jsonData = JSON.parse(json);
     return jsonData.data;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...