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 call。の最後の行です。この関数では、サーバー側から送信された値を確認したいと思います。任意の助け....
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" }
]
} );
私が見つけた最良の方法は、データが取得されてテーブルをレンダリングした後に起動する initComplete メソッドを使用することです。 [〜#〜] note [〜#〜]これは一度だけ起動します。
$("#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
}
});
これを使用できます:
"drawCallback": function(settings) {
console.log(settings.json);
//do whatever
},
データテーブル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.
}
});
}
});
Ajaxの成功オプションは、DataTablesが内部的に使用してデータの読み込みが完了したときにテーブル描画を実行するため、変更しないでください。推奨事項は「dataSrc」を使用して受信データを変更します。
"success" : function(data){
//do stuff here
fnCallback(data);
}
ドキュメント に基づいて、xhr
Ajaxイベントが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 );
} )
たぶんあなたがしたいことではないかもしれませんが、ajaxを完全に使用することで、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" }
]
} );
次のコードを試してください。
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"); });
}