Json returned but table empty
Json returned but table empty
I'm working with the jquery datatables plugin and codeigniter , while trying to follow (roughly ) http://www.ahmed-samy.com/php-codeigniter-full-featrued-jquery-datatables-part-1/. I am getting the following error:
DataTables warning: table id=big_table - Requested unknown parameter '0' for row 0. For more information about this error, please see http://datatables.net/tn/4
In firebug there are no errors and the following JSON is returned:
{"draw":0,"recordsTotal":3,"recordsFiltered":3,"data":[{"id":"2","message_id":"<047d7bf1665e40753c04fd394d72@google.com>","subject":"Delivery Status Notification (Failure)","date":"2014-07-02 19:34:17"},{"id":"3","message_id":"<ad86a2fb8673b8a6.14044068.406744.354605.en-US.b5df177c74ea@google.com>","subject":"Flying the red, white and blue on YouTube","date":"2014-07-03 19:01:21"},{"id":"4","message_id":"<047d7bf1665e04fd640c89@google.com>","subject":"Delivery Status Notification (Failure)","date":"2014-07-04 22:34:16"
i notice that the draw is 0 even though the number of records (3) is correct. The table itself its empty.
How can I fix this?
My controller:
function index()
{
//set table id in table open tag
$tmpl = array('table_open' => '<table id="big_table" border="1" cellpadding="2" cellspacing="1" class="mytable">');
$this->table->set_template($tmpl);
$this->table->set_heading("id,message_id,subject,date");
$this->load->view('serversidetestview');
}
//function to handle callbacks
function datatable()
{
$this->datatables->select("id,message_id,subject,date")->from('imap');
echo $this->datatables->generate();
}
My view:
<html>
<head>
<base href="<?=base_url();?>">
<!-- DataTables CSS -->
<link rel="stylesheet" type="text/css" href="http://cdn.datatables.net/1.10.1/css/jquery.dataTables.css">
<!-- jQuery -->
<script type="text/javascript" charset="utf8" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.2.min.js"></script>
<!-- DataTables -->
<script type="text/javascript" charset="utf8" src="http://cdn.datatables.net/1.10.1/js/jquery.dataTables.min.js"></script>
</head>
<body>
<h1>Subscriber management</h1>
<?php echo $this->table->generate(); ?>
</div>
<script type="text/javascript">
$(document).ready(function () {
var oTable = $('#big_table').dataTable({
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": 'datatable_controller/datatable',
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"iDisplayStart ": 20,
"fnInitComplete": function () {
oTable.fnAdjustColumnSizing();
},
'fnServerData': function (sSource, aoData, fnCallback) {
$.ajax
({
'dataType': 'json',
'type': 'POST',
'url': sSource,
'data': aoData,
'success': fnCallback
});
}
});
});
</script>
</body>
</html>
This question has an accepted answers - jump to answer
Answers
The error is caused by your first JSON row because it begins with a
"
but also includes a<script>
tage with another"
. So you have incorrectly formatted JSON.The
"draw": 0
just refers to the number of times the data is requested, each call should return an incremented value - so it is not your issue.Daimian,
Thanks for the Info about the draw. Any idea on how to fix the JSON? This is my first experiment with server side processing with datatables.
Thanks in advance,
Bill
First I would remove those
<script>
tags from your data source - any additional javascript can be performed client side via DataTablescolumns.render
Daimian,
Please forgive my ignorance, but what script tags are you referring to ?
Bill
Just to follow up, The Json is valid , I checked using http://jsonlint.com/. This forum is rendering it incorrectly. you can see the true version of it at http://pastebin.com/sNPYqdrn