2017-08-04 4 views
0

データを最新の状態に保つために1分間隔でページを更新しています。私はそこから離れて、最終的にブラウザの更新の代わりにリロードするデータテーブルを取得する必要があります。間隔でデータテーブルをリロードする

私の$ .postを皮切り:

$.post('api/displayQnams.php', function(data) 
{ 
    var table = $('example1').DataTable(); 
    table.clear(); 
    table.search('').draw(); 
    var obj = JSON.parse(data); 
    obj.forEach(function(item) 
    { 
    table.row.add([item.bkgname, item.quote, item.date, item.urgent]) 
    }); 
    table.draw(); 

    setInterval(function() 
    { 
    table.draw(); 
    console.log('test'); 
    }, 10000); // 10 second interval 
}); 

上記のコードは正常に動作します。 DataTableは問題なくページに印刷します。

今、$ .postの上にDataTableを設定しました。これがDataTableを設定する最良の方法であるかどうかはわかりませんが、必要な結果が得られます。

$(function() 
{ 
    $('#example1').DataTable({ 
    "dataType": "json", 
    "iDisplayLength": 25, 
    "order": [[ 6, "desc" ]], 
    "scrollY": 550, 
    "scrollX": true, 
    "bDestroy": true, 
    "stateSave": true 
    }); 
}); 

さらに多くのDataTableスタイルがありますが、私はそれを短くしたいと思いました。

最初のコードに戻って、間隔を10秒に設定しました。コンソールが10秒ごとに「テスト」しているのを見ることができますが、テーブルがリロードされていません。

DataTableを10秒ごとにリロードするには、何が欠けていますか?

ありがとうございます。

*編集*

ここでは、表は次のようになります。

<table id="example1" class="table table-bordered table-hover table-condensed"> 
<thead> 
<tr> 
    <th>column1</th> 
    <th>column2</th> 
    <th>column3</th> 
</tr> 
</thead> 
<tbody> 
    <tr> 
    <td></td> 
    <td></td> 
    <td></td> 
    </tr> 
</tbody> 
</table> 

答えて

0

の代わりにこのrow.add使用AJAXを行うと、あなたの列を定義:中続い

$(document).ready(function() { 
    $('#example').DataTable({ 
     "processing": true, 
     "serverSide": true, 
     "ajax": { 
      "url": "scripts/post.php", 
      "type": "POST" 
     }, 
     "columns": [ 
      { "data": "first_name" }, 
      { "data": "last_name" }, 
      { "data": "position" }, 
      { "data": "office" }, 
      { "data": "start_date" }, 
      { "data": "salary" } 
     ] 
    }); 
}); 

インターバル使用:

table.ajax.reload(); 
+0

あなたの提案を試みました。 datatables.min.jsファイルを指している "TypeError:c is undefined"エラーが表示されます。思考? –

+0

テーブルヘッダーが必要です。 '' –

+0

<テーブルのid = "table_idが" クラス= "表示"> 列1 列2 –

0

setIntervalコールバック関数で$ .post( '...')を呼び出していません。あなたのコードで

ルック:あなたを調べる場合は、次のsetIntervalコールバックの内側に、あなたはそう、あなたは...にわたって同一のデータを再描画一度だけ

EDITをあなたのデータを取得している table.draw() console.log('test')

を呼んでいますDevToolsの[ネットワーク要求]タブでは、1つのajaxリクエストにのみ注意する必要があります。

関連する問題