2017-08-21 2 views
2

私はjQuery Datatableを使用しているテーブルを持っています。テーブルは15秒ごとに新しいデータで更新されています。私はDatatableの最新バージョンを使用しています。新しいデータでDatatableを更新する

UIに影響するクリアメソッドを使用せずにデータテーブルを新しいデータで再初期化するにはどうすればよいですか?

マイコード:

jQuery.ajax({ 
    type: 'POST', 
    url: /list_tasks', 
    data: ajaxData, 
    spinner: true, 
    success: function (response) { 
     $('#task_table').html(response.html) 
     if ($.fn.DataTable.isDataTable('#task_table')) { 
      $('#task_table').DataTable().destroy(); 
     } 
     var dataTable=$('#task_table').DataTable({ 
      deferRender:true, 
      destroy: true, 
      scrollCollapse: true, 
      scroller:  true, 
      scrollY:  "200px", 
      bFilter:false, 
      bInfo: false, 
      bLengthChange:false, 
      initComplete: function(settings, json) { 

      }, 
      fnDrawCallback:function(){ 

      } 
     });   
    } 
}); 
+1

を別のアプローチは、さまざまなPHPスクリプトで自分のテーブルコードを区切るとiframe内に配置することであろう。 reload(); ' –

+0

jQuery Datatableのrow apiを追加しようとしましたか? Ref link: 'https:// datatables.net/examples/api/add_row.html' – Kashyap

答えて

1

の代わりにあなたがajax機能に建てられたのDataTableに頼るべきで車輪の再発明。あなたがそれを行う場合は、ajax.reload()を使用して、非常に簡単にテーブルを更新することができます。

var dataTable =$('#task_table').DataTable({ 
    ajax: { 
    url: '/list_tasks', 
    data: ajaxData 
    }, 
    deferRender:true, 
    scrollCollapse: true, 
    scroller:  true, 
    scrollY:  "200px", 
    bFilter:false, 
    bInfo: false, 
    bLengthChange:false, 
    initComplete: function(settings, json) { 
    }, 
    fnDrawCallback:function(){ 
    } 
}); 

setInterval(function() { 
    dataTable.ajax.reload() 
}, 15000); 

更新。あなたは、DOMにテーブルを挿入したり削除したりした後で、それを後でdataTableとしてインスタンス化すると、UIのちらつ​​きや影響を防ぐことはできません。

<iframe src="table.php" id="table"></iframe> 

その後はiframe自体が各15秒更新:この `dataTable.ajaxを試してみてください

setInterval(function() { 
    $('#table')[0].contentWindow.location.reload(true); 
}, 15000); 
+0

HTMLテーブルがサーバーサイドのテンプレートを使用してビルドされているので、datatable.ajaxを使用できません。 – pareshm

+0

@pareshm、全体を作成しないようにテーブルマークアップサーバサイド?確かに速く実行され、より流暢なフローを提供します。つまり、UIには影響しません。それは非常に簡単です。ここに例があります** http://jsfiddle.net/0f9Ljfjr/957/** – davidkonrad

+0

いいえできません多くのクラスと操作は、サーバー側から来るそのテーブルに現在行われています 全く新しいアプローチは非常に多くの時間を費やしています 前にデータテーブル を使用していませんでした。今すぐ – pareshm

関連する問題