2016-11-21 12 views
2

初めてjqueryデータ型を試しました。マニュアルなどを参照した後、私は以下のプログラムを書くことができましたが、jsonの応答が無効であるというエラーが常に出ています。jqueryデータテーブル内の無効なjson応答

モデルファイル:

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; 
    }   

コントローラ:

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); 

    } 

ビューファイル:

<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> 

がどのように私は、エラーを修正しますか?このような

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

:記録取得することを

JSONレスポンスは、内部の "データ型" を追加する

[{"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

$ myMail [] = array( 'mailId' => $ row ['mailId']、 'mailSender' => $ columnSenderNameなど); 〜$ myMail [] = array($ row ['mailId']、$ columnSenderName .....); –

+0

それはどのような目的に役立つでしょうか? jsonレスポンスは正しく記録されていますが、datatableコールは有効なjsonレスポンスを取得できません。また、キーのない配列は意味がありません –

+1

なぜjsonデータを印刷してビューをロードするのですか? jsonを無効にする内容を混在させています。 – phobia82

答えて

0

てみている

"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": "" 
} 

、これは動作しません場合は、あなたはまだこのようになる結果を解析しようとすることができます:JSON.parse('your JSON string');json_encode()メソッドで作成された、PHPから送信するJSON文字列。

+1

これに対する解決策は私がecho json_encode($ mailBoxData)を使用しました。それはうまくいった。とにかく、ありがとう! –

関連する問題