DataTables with AJAX
HTML
<script src="http://datatables.net/release-datatables/media/js/jquery.dataTables.js"></script>
<link rel="stylesheet" href="http://datatables.net/release-datatables/media/css/demo_table.css">
<script src="http://vitalets.github.com/x-editable/assets/mockjax/jquery.mockjax.js"></script>
<link rel="stylesheet" href="http://cdn.datatables.net/1.10.1/css/jquery.dataTables.css">
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css">
<script src="http://cdn.datatables.net/1.10.1/js/jquery.dataTables.min.js"></script>
<table id="test" class="display" cellspacing="0">
<thead><tr><th>select</th><th>operation</th></tr></thead>
<tbody></tbody>
</table>
<p>
<input id="test-data-json" name="test_data_json" type="hidden">
<button id="btn-submit">Submit</button>
</p>
JavaScript
//ajax emulation
$.mockjax({
url: '/test/0',
responseTime: 200,
responseText: {
"aaData" : [
[{"id":1}, {"chk":"on"}, {"operation":["Modify", "Delete"]}],
[{"id":2}, {"chk":"on"}, {"operation":["Modify", "Delete"]}],
[{"id":3}, {"chk":"on"}, {"operation":["Modify", "Delete"]}],
[{"id":4}, {"chk":"on"}, {"operation":["Modify", "Delete"]}],
[{"id":5}, {"chk":"on"}, {"operation":["Modify", "Delete"]}],
[{"id":6}, {"chk":"on"}, {"operation":["Modify", "Delete"]}],
[{"id":7}, {"chk":"on"}, {"operation":["Modify", "Delete"]}]
]
}
});
// Global variable holding current state of the controls in the data table
var g_data = {};
var $table = $('#test');
$table.dataTable( {
"lengthMenu": [[2,25,50 ,100, -1], [2,25,50, 100, "All"]],
"pagingType": "full_numbers" ,
"paging": true,
"ordering" : true,
"scrollY":false,
"autoWidth": false,
"serverSide": false,
"processing": false,
"info": true ,
"deferRender": true,
"processing": true,
"columns": [
["data", 1 ],
["data", 2 ]
],
"ajax" : {
"url": "/test/0",
"dataSrc" : function(json){
var data = json.aaData;
for (var i = 0; i < data.length; i++){
var chk_name = 'chk_' + data[i][0].id;
// If checkbox was never checked
if(typeof g_data[chk_name] === 'undefined'){
// Retrieve checkbox state from received data
g_data[chk_name] = (data[i][1].chk === 'on') ? true : false;
}
}
return data;
}
},
"createdRow" : function( row, data, index ){
var chk_name = 'chk_' + data[0].id;
var chk_checked = (g_data[chk_name]) ? " checked" : "";
$('td:eq(0)', row)
.html('<input name="' + chk_name +'" type="checkbox" value="1"' + chk_checked + '>');
var select_name = 'select_' + data[0].id;
html =
'<select name="' +...