有人可以告诉我如何使用fnServerData
吗?
$(document).ready( function() {
$('#example').dataTable( {
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "xhr.php",
"fnServerData": function ( sSource, aoData, fnCallback, oSettings ) {
oSettings.jqXHR = $.ajax( {
"dataType": 'json',
"type": "POST",
"url": sSource,
"data": aoData,
"success": fnCallback
} );
}
} );
} );
下面是我的Ajax调用,我想用fnServerData替换ajax call
。
$.ajax({
type: 'GET',
url: url,
jsonp: true,
contentType: "application/json",
dataType: 'jsonp',
success: function (data) {
$.each(data.value, function(i,item){
table.fnAddData(item);
});
},
error: function (e) {
console.log(e.message);
}
});
http://datatables.net/ref#fnServerData
什么是sSource,fnCallback和oSettings?谁能告诉我如何使用fnServerData
?
答案 0 :(得分:6)
sSource,fnCallback和oSettings由Datatables生成。
sSource是您的ajax调用的URL。初始化数据表时,请在sAjaxSource中指定它。所以你应该把你的url传递给sAjaxSource。
oSettings由datatables js创建和维护。它存储有关数据表状态的重要信息。此处提供详细文档: https://datatables.net/docs/DataTables/1.9.0/DataTable.models.oSettings.html
但我认为,你的成功功能是不必要的。您应该在初始化期间指定aoColumns作为选项,然后数据表将为您填充数据。
$(document).ready( function() {
$('#example').dataTable( {
"aoColumns": [
{ "mData": "engine" },
{ "mData": "browser" },
{ "mData": "platform.inner" },
{ "mData": "platform.details.0" },
{ "mData": "platform.details.1" }
]
}),
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": url,
"fnServerData": function ( sSource, aoData, fnCallback, oSettings ) {
oSettings.jqXHR = $.ajax( {
"dataType": 'json',
"type": "POST",
"url": sSource,
"data": aoData,
"success": fnCallback,
"error": function (e) {
console.log(e.message);
}
});
}
});
});
有关aoColumns的更多信息,请访问:http://www.datatables.net/usage/columns 另外,请查看数据表页面上的示例。应该有你需要的任何例子: http://www.datatables.net/usage/columns
此致 SAZ
答案 1 :(得分:0)
如果要从客户端向服务器发送额外字段,可以向aoData
对象添加属性,如下所示:
"fnServerData": function (sSource, aoData, fnCallback, oSettings) {
aoData.push({ "name": "Input1", "value": "xx" });
oSettings.jqXHR = $.ajax({
"dataType": 'json',
"type": "POST",
"url": sSource,
"data": aoData,
"success": fnCallback
});
},
答案 2 :(得分:0)
"fnServerData": function ( sSource, aoData, fnCallback, oSettings ) {
oSettings.jqXHR = $.post( sSource, aoData, function( data ) {
//alert(data.toSource());
if ( ! parseInt(data.iTotalRecords) > 0 )
alert('ZeroRecords');
fnCallback(data);
//fnCustomCallback(data);
},'json');
}