2016-11-21 5 views
2

Ich habe JQuery-Datatables zum ersten Mal versucht. Nach dem Verweisen auf das Handbuch usw. konnte ich das folgende Programm schreiben, aber ich bekomme ständig einen Fehler, der besagt, dass die JSON-Antwort ungültig ist.Ungültige JSON-Antwort in JQuery-Datentabelle

Modelldatei:

public function inbox($data) 
    { 
     $con = mysqli_connect("localhost", "root", "","mailman"); 

     $sentFromEmail = $data['sentFromEmail']; 

     $querySender = "SELECT userId FROM users WHERE userEmail= '$sentFromEmail'"; 
     $resSender = mysqli_query($con, $querySender); 
     $rowSender = mysqli_fetch_assoc($resSender); 
     $columnSender = $rowSender["userId"]; 


     $querySender = "SELECT mailId,mailSender,mailSubject,mailContent, mailSendDate FROM mails WHERE mailReceiver = '$columnSender'"; 
     $resSender = mysqli_query($con, $querySender); 
     $rowSender = mysqli_fetch_assoc($resSender); 

     $myMail = array(); 
     $test = array(); 
     while($row = mysqli_fetch_array($resSender))  
     { 
      $senderId = $row['mailSender']; 

      $querySenderName = "SELECT userName FROM users WHERE userId= '$senderId'"; 
      $resSenderName = mysqli_query($con, $querySenderName); 
      $rowSenderName = mysqli_fetch_assoc($resSenderName); 
      $columnSenderName = $rowSenderName["userName"]; 

      $test[] = $row; 
      $myMail[] = array(
       'mailId' => $row['mailId'], 
       'mailSender' => $columnSenderName, 
       'mailSubject' => $row['mailContent'], 
       'mailContent' => $row['mailSubject'], 
       'mailSendDate' => $row['mailSendDate'] 
       ); 

      // $myMailData = json_encode($test); 
      // echo $myMailData; 
     } 

     return $test; 
    }   

Controller:

public function index() 
    { 
     //$userLoginData = $this->session->userdata('user_login'); 

     $data = array(
      'sentFromEmail' => $this->session->userdata['user_login']['loginEmail']  , 

      ); 

     //load the method of model 
     $mailBoxData = array(); 
     $mailBoxData['mailBoxData'] = $this->mail_receive->inbox($data); 

     $jsonData = json_encode($mailBoxData); 

     echo $jsonData; 

     $this->load->view('inbox', $mailBoxData); 

    } 

Ansicht Datei:

<script> 
    $(document).ready(function() { 
     $('#inbox').dataTable({ 
     "processing": true, 
     "serverSide": true, 
     "ajax": { 
      "url" : "http://localhost/codeigniter/index.php/Inbox_redirect/index", 
      "type" : "POST", 
      "dataSrc": "" 
     }, 
     "columns" : [ 
      {"data" : "mailId"}, 
      {"data" : "mailSender"}, 
      {"data" : "mailSubject"}, 
      {"data" : "mailContent"}, 
      {"data" : "mailSendDate"} ] 

    }); 
}); 
</script> 

<table class="table table-hover table-striped" id="inbox" name="inbox"> 
            <thead> 
             <th>ID</th> 
             <th>Sent By:</th> 
             <th>Time</th> 
             <th>Subject</th> 
             <th>Message</th> 
            </thead> 
            <div class="container"> 
            <tbody> 


            </tbody> 
            </div> 
           </table> 

Wie beheben ich den Fehler?

die Json Antwort, dass

[{"mailId":"13","mailSender":"nikita","mailSubject":"testing","mailContent":"njcndncvjdvnfjvnfvnfjvnjkfnvkfnbkfkbnfdbteb","mailSendDate":"2016-11-16 15:04:20"},{"mailId":"14","mailSender":"nikita","mailSubject":"testing","mailContent":"njcndncvjdvnfjvnfvnfjvnjkfnvkfnbkfkbnfdbteb","mailSendDate":"2016-11-16 15:23:02"},{"mailId":"17","mailSender":"nikita","mailSubject":"wygdyegfhfbvhrvf","mailContent":"ghfgregughuthgujbhjhykhytj","mailSendDate":"2016-11-17 12:55:20"},{"mailId":"21","mailSender":"jyotsna","mailSubject":"hi there","mailContent":"hello, how are you?","mailSendDate":"2016-11-18 14:50:56"}] 
+0

Versuchen Sie Array ohne Schlüssel wie $ myMail [] = Array ('mailId' => $ row ['mailId'], 'MailSender' => $ columnSenderName, .....); zu $ myMail [] = Array ($ row ['mailId'], $ columnSenderName .....); –

+0

Welchen Zweck wird es erfüllen? Die JSON-Antwort wird korrekt aufgezeichnet, aber dieser Datatable-Aufruf kann keine gültige JSON-Antwort erhalten. Auch Array ohne Schlüssel wäre sinnlos –

+1

Warum drucken Sie die JSON-Daten und laden Sie auch eine Ansicht? Es vermischt beide Inhalte und macht den JSON ungültig. – phobia82

Antwort

0

Versuchen aufgezeichnet immer nach innen zu addieren "datatype":

"ajax": { 
    "url" : "http://localhost/codeigniter/index.php/Inbox_redirect/index", 
    "type" : "POST", 
    "dataSrc": "" 
} 

wie folgt aus:

"ajax": { 
    "url" : "http://localhost/codeigniter/index.php/Inbox_redirect/index", 
    "type" : "POST", 
    "dataType": "json", // The type of data that you're expecting back from the server. 
    "dataSrc": "" 
} 

Wenn dies nicht funktioniert, Sie können immer noch versuchen, das Ergebnis zu analysieren, das Sie so erhalten: JSON.parse('your JSON string');. Die JSON-Zeichenfolge, die Sie von PHP senden, mit der Methode json_encode().

+1

die Lösung zu diesem wurde in Controller ich Echo verwendet json_encode ($ mailBoxData); und das hat funktioniert. Trotzdem danke! –