是否可以在datatable ajax调用中成功调用javascript函数。 这是我尝试使用的代码,
var oTable = $('#app-config').dataTable(
{
"bAutoWidth": false,
"bDestroy":true,
"bProcessing" : true,
"bServerSide" : true,
"sPaginationType" : "full_numbers",
"sAjaxSource" : url,
"fnServerData" : function(sSource, aoData, fnCallback) {
alert("sSource"+ sSource);
alert("aoData"+ aoData);
$.ajax({
"dataType" : 'json',
"type" : "GET",
"url" : sSource,
"data" : aoData,
"success" : fnCallback
});
}
是否可能有类似的东西,
success : function(){
//.....code goes here
}
而不是“成功”:fnCallback ------>这是AJAX调用的最后一行。 在这个函数中,我想检查从服务器端发送的值。 提前感谢您的帮助......
答案 0 :(得分:39)
您可以使用dataSrc:
以下是datatables.net的典型示例
var table = $('#example').DataTable( {
"ajax": {
"type" : "GET",
"url" : "ajax.php",
"dataSrc": function ( json ) {
//Make your callback here.
alert("Done!");
return json.data;
}
},
"columns": [
{ "data": "name" },
{ "data": "position" },
{ "data": "office" },
{ "data": "extn" },
{ "data": "start_date" },
{ "data": "salary" }
]
} );
答案 1 :(得分:26)
我找到的最好的方法是使用initComplete方法,因为它在检索数据后触发并呈现表格。 注意这只会触发一次。
$("#tableOfData").DataTable({
"pageLength": 50,
"ajax":{
url: someurl,
dataType : "json",
type: "post",
"data": {data to be sent}
},
"initComplete":function( settings, json){
console.log(json);
// call your function here
}
});
答案 2 :(得分:21)
您可以使用:
"drawCallback": function(settings) {
console.log(settings.json);
//do whatever
},
答案 3 :(得分:5)
对于数据表1.10.12。
$('#table_id').dataTable({
ajax: function (data, callback, settings) {
$.ajax({
url: '/your/url',
type: 'POST',
data: data,
success:function(data){
callback(data);
// Do whatever you want.
}
});
}
});
答案 4 :(得分:2)
不应更改ajax的成功选项,因为当数据加载完成时,DataTables在内部使用它来执行表绘制。推荐使用“ dataSrc”来更改接收到的数据。
答案 5 :(得分:1)
"success" : function(data){
//do stuff here
fnCallback(data);
}
答案 6 :(得分:1)
基于the docs,当完成Ajax请求时,将触发xhr
Ajax事件。因此,您可以执行以下操作:
let data_table = $('#example-table').dataTable({
ajax: "data.json"
});
data_table.on('xhr.dt', function ( e, settings, json, xhr ) {
// Do some staff here...
$('#status').html( json.status );
} )
答案 7 :(得分:1)
这对我来说很好。另一种方式效果不好
tasksToRun.OrderBy(t=> t.Result.Actions.OrderBy(a =>
a.Description).First().Descritpion)
答案 8 :(得分:0)
尝试以下代码。
var oTable = $('#app-config').dataTable(
{
"bAutoWidth": false,
"bDestroy":true,
"bProcessing" : true,
"bServerSide" : true,
"sPaginationType" : "full_numbers",
"sAjaxSource" : url,
"fnServerData" : function(sSource, aoData, fnCallback) {
alert("sSource"+ sSource);
alert("aoData"+ aoData);
$.ajax({
"dataType" : 'json',
"type" : "GET",
"url" : sSource,
"data" : aoData,
"success" : fnCallback
}).success( function(){ alert("This Function will execute after data table loaded"); });
}
答案 9 :(得分:0)
也许这并不是您想要的,但是使用ajax complete解决了我在ajax调用返回时隐藏微调框的问题。
所以看起来像这样
var table = $('#example').DataTable( {
"ajax": {
"type" : "GET",
"url" : "ajax.php",
"dataSrc": "",
"success": function () {
alert("Done!");
}
},
"columns": [
{ "data": "name" },
{ "data": "position" },
{ "data": "office" },
{ "data": "extn" },
{ "data": "start_date" },
{ "data": "salary" }
]
} );