我正在使用datatable显示来自数据库mysql的列表
我需要在表加载结束时更新一些输入,然后我使用成功函数,但这似乎阻止了数据呈现
var table = $('#example').DataTable({
'processing': true,
'serverSide': true,
'ajax': {
type: 'POST',
'url': url,
'data': function (d) {
console.log(d.order);
return JSON.stringify( d );
},
// EDIT this "my" success function
success: function( data ) {
$('#my_input').val(data.return);
}
}
杰森回来了:
{
"data":[[ (datatable value) ]],
"returned":"myvalue"
}
这里是jsfiddle
答案 0 :(得分:2)
只需删除success
回调。
成功 - 不得因为内部使用而被覆盖 数据表。操纵/转换服务器返回的数据 使用ajax.dataSrc(上面),或使用ajax作为函数
Datatable默认处理success
回调,不要覆盖它。
而是使用complete
的{{1}}选项在数据加载后执行某些操作。
更新了fiddle
答案 1 :(得分:2)
您只需要删除成功回调。
var table = $('#example').DataTable({
'processing': true,
'serverSide': true,
'ajax': {
type: 'POST',
'url': url,
'data': function (d) {
console.log(d.order);
return JSON.stringify( d );
}
}
修改
你需要使用它将在ajax完成后调用的ajax.dataSrc属性。 它也适用于刷新 https://datatables.net/reference/option/ajax.dataSrc
var table = $('#example').DataTable({
'ajax': {
type: 'POST',
'url': url,
'data': function (d) {
console.log(d.order);
return JSON.stringify( d );
},
"dataSrc": function (json) {
$("#mydata").val(json.recordsTotal);
return json.data;
}
},
});
这里更新了小提琴。 http://jsfiddle.net/2jkg3kqo/2/
答案 2 :(得分:2)
Datatable有自己的complete
事件,名为initComplete
。
如果您重新定义success
,那么您将覆盖Datatable自己的功能。
var table = $('#example').DataTable({
'processing': true,
'serverSide': true,
'ajax': {
....
....
},
'initComplete':function(settings, json){
alert($('#example tbody tr').length+ ' records on screen');
});
参考:https://datatables.net/reference/option/initComplete
更新fidle:http://jsfiddle.net/ntcwust8/94/