すべての従業員を示すデータテーブルがあります。 _document.ready
_のすべての従業員に対して正常に機能しています。 _'project_manager' & 'team_leader'
_のような従業員のタイプを含む選択タグがあり、従業員タイプの変更時に関数get_employees(emp_type)
を呼び出して、選択した従業員タイプを渡します。
Ajax応答で必要かつ適切なデータを取得していますが、警告をスローしています
_DataTables warning: table id=example - Cannot reinitialise DataTable. For more information about this error, please see http://datatables.net/tn/3
_
私はそれを破壊しようとしましたが、運はありません。
試してみた
_$('#example').dataTable().fnClearTable();
$('#example').dataTable().fnDestroy();
_
テーブルをクリアし、新しく追加されたデータを表示していますが、毎回列名を持つ新しいソート画像を追加しています。
これが私のコードスニペットです。
_$(document).ready(function() {
get_employees('all');
});
function get_employees(emp_type)
{
$.ajax({
url: '../ajax_request.php',
type: "POST",
data: {
action: "admin_get_all_employees",
type: emp_type
},
success: function(response) {
var response = jQuery.parseJSON(response);
// $('#example').destroy(); tried this but haven’t worked
$('#example').dataTable({
"aaData": response.data,
});
}
});
}
_
前もって感謝します。
DataTablesの現在のバージョン(1.10.4)では、単にdestroy:true
構成に追加して、既に存在するテーブルが再初期化される前に削除されるようにします。
$('#example').dataTable({
destroy: true,
aaData: response.data
});
このテクニカルノート datatablesのセクションでは、この警告の理由について説明しています。そこからの関連情報:
このエラーは、選択したノードのDataTableインスタンスが既に初期化されているときにDataTablesコンストラクターオブジェクトにオプションを渡すことによってトリガーされます。例えば:
_$('#example').dataTable( { paging: false } ); $('#example').dataTable( { searching: false } );
_
上記のドキュメントは、これに対処する2つの方法を説明しています。
_table = $('#example').DataTable( { retrieve: true, paging: false } );
_
破棄:この場合、table.destroy();
を呼び出してからテーブルを再度作成することにより、オブジェクトを明示的に破棄できます。または、受け入れられた回答に記載されているように、単に_destroy: true
_オプションを渡すことができます。
_table = $('#example').DataTable( { paging: false } ); table.destroy(); table = $('#example').DataTable( { searching: false } );
_
Destroy:trueオプションの使用:
_$('#example').DataTable( { destroy: true, searching: false } );
_
注:このエラーは、dataTableを複数回作成するJavaScriptファイルを含める場合にも発生する可能性があります。私はApacheタイルを使用していて、ベースと拡張定義にそれを含めましたが、これもこのエラーを引き起こしました。
以下のようなものを試してください
var $table=$('#example').dataTable({
"aaData": response.data,
});
$table.fnDestroy();
これは私を助けました:
var table = $('#example').DataTable( {
// Clear previous data
destroy: true,
// Load new data with AJAX from data.json file.
ajax: "data.json"
} );