2017-08-10 14 views
3

私はしばらくの間、datatablesで作業してきましたが、明らかに、私はそれらを正しい方法で使用していません。過去にはjquery datatableの機能が動作しない

次のように、私は、$ .postを使用して、私のデータテーブルを起動します:

$(document).ready(function() { 
    $.post('process/recordTables.php', function(data) 
    { 
    var table = $('#example1').DataTables(); 
    table.clear(); 
    var obj = JSON.parse(data); 
    obj.forEach(function(item) 
    { 
     table.row.add([item.column1, item.column2, //and so on]); 
    }); 
    table.draw(); 
    }); 
}); 

上記のコードの作品は。私のデータテーブルは必要なデータを印刷します。 obj.forEach内では、必要に応じてhrefタグなどの機能を使用して列を設定できます。

ただし、設定した間隔でデータテーブルをリロードできるようにしたい場合は、上記の方法を使用できません。それは "ajax"メソッドを使用している必要があります。私は、すぐに上記のコードを使用し

$(document).ready(function() 
{ 
    $('#example1').DataTable({ 
    "processing": true, 
    "serverSide": true, 
    "ajax": { 
     "url": "process/recordTables.php", // same url as the above code 
     "type": "POST", 
     "dataSrc": '' 
    }, 
    "columns": [ 
     { "data": "" }, 
     { "data": "column1" }, 
     { "data": "column2" }, 
     { "data": "column3" }, 
     // and so on 
    ], 
    "iDisplayLength": 25, 
    "order": [[ 3, "desc" ]], 
    "scrollY": 550, 
    "scrollX": true, 
    "bDestroy": true, 
    "stateSave": true, 
    // few others that don't seem to affect functionality 
    }); 
}); 

:以下のコードを使用して、いくつかの試行錯誤の後

は、私はjqueryののDataTableの「正しい」形態(及び使用)を印刷することができました$ .postメソッドを使用して同じデータを表示することができました。

ただし、機能は動作しません。並べ替えは機能しません。ページ下部のページネーション、検索フィルタ、データ情報には、「0のうち0エントリ」が表示されます。何も動作しません。

この問題を解決する方法はありますか?私は困惑している。

ありがとうございます。あなたが"serverSide": trueを追加すると、属性、

<table id="example1" class="table table-bordered table-hover table-condensed"> 
<thead> 
    <tr> 
    <th></th> 
    <th>Column1</th> 
    <th>Column2</th> 
    <th>Column3</th> 
    // and so on 
    </tr> 
</thead> 
<tbody> 
</tbody> 
</table> 
+1

は、あなたが投稿でき、サーバに渡されたアクションを注文し、検索、すべてのページング、有効このDataTableに関連するHTML?値 ''の属性dataSrcを持つと、データは表示されません。その属性を完全に削除します。 – Cratebox99

+0

テーブルを追加しました。私はTBとTDタグを持っていましたが、同じ結果が得られました。 –

+1

あなたのHTMLは問題ありません.thatがdataTable定義の列と一致していれば、それに触れる必要はありません。 – Cratebox99

答えて

2

あなたはserver-side processingとしてあなたDataTableを設定:

* EDIT *

ここでは、HTMLテーブルです。その場合には、すべてのクライアント側の処理が無効になっています:

サーバー側の処理で

のDataTableの行いが

+0

@davidkonrad私は間違いを犯して間違った属性を...コピーしました。今修正されました。 –

関連する問題