简体   繁体   中英

Invalid json response in jquery datatable

I have tried jquery datatables for the first time. After referring the manual etc I was able to write the program below, but I am constantly getting an error stating that the json response is invalid.

model file:

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

    }

view file:

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

How do I rectify the error?

the json response that getting recorded is

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

Try to add "dataType" inside:

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

like this:

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

If this won't work, you can still try to parse the result which you get like this: JSON.parse('your JSON string'); . The JSON string which you send from PHP, made with the json_encode() method.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM