2016-07-13 10 views
1

Ich habe ein Problem mit datatable zeigen Einträge, sortieren und filtern grundsätzlich alle JS-Funktion nicht funktioniert. Ich habe bereits die JS-Dateien aufgenommen. Einige Details: Meine DataTables sind Server-seitige Verarbeitung und Daten in Json von Server-Seite abrufen.jQuery DataTable Einträge anzeigen, Suchfeld und Sortierung funktioniert nicht?

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 
    ); 

jetzt kann ich die Tabelle sehen, aber ich kann einfach nicht das Sortieren oder Suchen und mehr Einträge zeigen. irgendein Vorschlag? Vielen viel, mehr

Antwort

1

Ich denke, dass Sie ein Objekte in Ihrer Datentabelle hinzufügen müssen:

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

Und für:

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

Um Ihre PHP-Code, als Sie so etwas wie dies für die Bestellung müssen hinzufügen Suche:

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

Für Einträge, die Sie diese Variablen auf Ihre uRL setzen müssen:

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

Und setzen Sie diese Variablen zu Ihrer Abfrage.

+0

Ich habe die Suchvariablen zu meiner Abfrage hinzufügen, aber das Databases Suchfeld keine Eingaben nach der Aktualisierung – georgetovrea

+0

Paste Ihre Änderungen an Frage – rad11

+0

Ich habe Update meine Frage. Nach etwas im Suchfeld zeichnet die Tabelle viel mehr als ursprüngliche Ergebnisse auf, aber es sollte weniger als ursprüngliche Ergebnisse, nicht? – georgetovrea

Verwandte Themen