2016-07-28 8 views
0

10秒ごとに更新したい通知があるページがありますが、ページ全体をリロードする必要はありません。通知を含むdivをリロードするだけです。通知自体は、ページがロードされたときに初期化されるデータテーブル内にありますが、divがリロードされたときにデータテーブルを再初期化することができませんでした。 divは正常にリロードされますが、通常の表になります。ここに私のコードは次のとおりです。Datatableをどのように再初期化するのですか?

$(document).ready(function() { 
    loadNotificationsTable(); 
}); 

setInterval(reloadNotificationsTable, 10000); 

function reloadNotificationsTable() { 
    $('#NotificationsTable').dataTable().fnDestroy(); 

    $("#notificationsPlaceholder").load(location.href + " #notificationsPlaceholder>*", ""); 

    $("#notificationsPlaceholder").ready(function() { 

     loadNotificationsTable(); 
    }); 
}; 

function loadNotificationsTable() { 
    $('#NotificationsTable').dataTable({ 
     ajax: "data.json", 
     "bLengthChange": false, 
     'iDisplayLength': 1000, 
     "bSort": false, 
     "bFilter": false, 
     "sDom": 'ft<"bottom"ilp>', 
     "bDestroy": false, 
     "bPaginate": false, 
     "bInfo":false 
    }); 
}; 

は私を助けて、私が間違ってやっているものを私に見せることができ、誰ですか?

+0

コールバックでロードが終了した後に再初期化したい場合もあります。 –

答えて

1

てみloadがコールバックで終了した後のDataTableを再初期化する:あなたがテーブルに

https://legacy.datatables.net/ref#bDestroy

"bDestroy": true, 
を交換したいので、

$("#notificationsPlaceholder").load(location.href + " #notificationsPlaceholder>*",function(data){ 
    loadNotificationsTable(); 
}); 

はまた、あなたの初期化コード にこれを追加

+0

完全に動作します、ありがとうございます! – necrofish666

+0

申し訳ありませんが、気を散らして忘れてしまいました。再度、感謝します。 – necrofish666

1

テーブルを定期的にリフレッシュする必要がある場合は、次のように使用してください。

$('#table_id').DataTable().ajax.reload(); 

このコードをsetTimeout()関数とともに使用すると、定期的にデータテーブルを更新できます。

関連する問題