2016-07-13 15 views
1

は、私は、ソートやフィルタ基本的にすべてのJSの機能が動作しない、データテーブルショーのエントリに問題があります。私は既にJSファイルを含んでいます。いくつかの詳細:私のDataTablesはサーバー側の処理であり、サーバー側からjsonでデータを取得します。jQuery DataTableエントリを表示する、検索ボックスと並べ替えが機能しない?

datatable.php

<script type="text/javascript" charset="utf8" src="//code.jquery.com/jquery-1.12.3.js"></script> 
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script> 
<script> 
$(document).ready(function() { 
$.fn.dataTable.ext.errMode = 'none'; 
    var table = $('#example').DataTable({ 
    "processing": true, 
    "serverSide": true, 
    "jQueryUI": true, 
    "ordering": true, 
    "searching": true, 
    "order": [[1, 'desc']],//set column 1 (time) 
     "ajax": { 
     url: "process.php", 
     type: 'POST', 
     data: { 
     from: "<?php echo $from; ?>", 
     to: "<?php echo $to; ?>" 
      } 
     },  
    "columns": [ 
     { 
      "className":'details-control', 
      "orderable":false, 
      "data":null, 
      "defaultContent": '' 
     }, 
     { "data": "time"}, 
     { "data": "message", 
      "render": function (data, type, row) 
       { 
        data = data.replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, "&quot;"); 
        return type === 'display' && data.length > 200 ? 
       '<span title="'+data+'">'+data.substr(0, 98)+'...</span>' :data; 
       } 
      } 

    ] 

}); 

// Add event listener for opening and closing details 
$('#example tbody').on('click', 'td.details-control', function() { 
    var tr = $(this).closest('tr'); 
    var row = table.row(tr);  
    if (row.child.isShown()) { 
     // This row is already open - close it 
     row.child.hide(); 
     tr.removeClass('shown'); 
    } 
    else { 
     // Open this row 
     row.child(format(row.data())).show(); 
     tr.addClass('shown'); 
    } 
    }); 
}); 
</script> 
<body> 
    <table id="example" class="display" cellspacing="0" width="100%"> 
    <thead> 
     <tr> 
      <th ></th> 
      <th data-search-index="3">time</th> 
      <th data-search-index="3">Message</th> 
      </tr> 
    </thead> 
       <tfoot> 
       <tr> 
        <th></th> 
        <th>time</th> 
        <th>Message</th> 
       </tr> 
       </tfoot> 
      </table> 
</body> 

process.php

$search=''; 
$requestData= $_REQUEST; 
if(isset($_POST["search"]["value"]) && !empty($_POST["search"]["value"])){ 
$search ='&q=_all:'.$_POST["search"]["value"]; 
} 
$qryurl ='<ip>/log/_search?size=10'.$search ; 

    if (!empty($requestData['start']) && $requestData['length'] != '-1') 
    { 

     $qryurl ='<ip>/log/_search?size=10&from='.$requestData['start'].$search; 
    } 
....... 
//json output 
$results = array(
    "draw" => intval($requestData['draw']), 
    "iTotalRecords" =>intval($total), 
     "iTotalDisplayRecords" => intval($total), 
    "aaData"=>$sourceary 
    ); 

今私はテーブルを見ることができますが、私はちょうどソートや検索をすることはできませんし、より多くのエントリを示しています。なにか提案を?私はあなたがあなたのDataTableにオブジェクトを追加する必要があると思うより

答えて

1

、たくさんありがとう:

ordering: true, 
searching: true, 
order: [[0, 'asc']]//default 

あなたのPHPコードにあなたが発注のためにこのような何かを追加する必要がありますより:

if(count($_POST['order'])){ 
    $orderBy = $_POST['columns'][$_POST['order'][0]['column']]['data']; 
    $orderDir = $_POST['order'][0]['dir']; 
} 

とのために検索:

if(isset($_POST["search"]["value"]) && !empty($_POST["search"]["value"])){ 
    $search = $_POST["search"]["value"]; 
} 

エントリの場合は、この変数をURLに入力する必要があります。

$howMany = (isset($_POST['length'])) ? intval($_POST['length']) : 10;//10 is default its size param 
$start = (isset($_POST['start'])) ? intval($_POST['start']) : 0; 

この変数をクエリに入力します。

+0

私はクエリに検索変数を追加しましたが、データテーブル検索ボックスは更新後に入力を受け付けません – georgetovrea

+0

質問に変更を貼り付け – rad11

+0

私は自分の質問を更新しました。検索ボックス内の何かの後に、テーブルは元の結果よりもはるかに多くを記録しますが、元の結果よりも小さくする必要がありますか? – georgetovrea

関連する問題