2016-03-23 12 views
2

Ich habe eine Web-Anwendung, die JQuery DataTables verwendet. Es verwendet den Parameter ajax zum Anfordern und Einfügen von JSON-Daten in die Tabelle.JQuery DataTables - Catch 'Ajax' Antwort

Am Anfang der angeforderten Datei .php wird jedoch geprüft, ob der Benutzer angemeldet ist. Wenn diese Überprüfung fehlschlägt, wird eine JSON-Meldung angezeigt.

<?php 
    session_start(); 
    if (!isset($_SESSION['logged']) || $_SESSION['logged'] !== true) { 
     $array = array(utf8_encode('logged')=>utf8_encode('false')); 
     echo json_encode($array); 
     exit; 
    } 
?> 

table = $('#active-issues').DataTable({ 
     "scrollY": pixels, 
     "dom": '<"top"if>rt<"bottom"><"clear">', 
     "paging": false, 
     "responsive":true, 
     "bProcessing": true, 
     "ajax": { 
      "data": function(){ 
       $('#active-issues').DataTable().ajax.url(
        "php/get_issues.php" 
        + "?id=" + id 
        + "&customer_id=" + customerid 
       ); 
      } 
     }, 
     columns: [ 
      { responsivePriority: 1 }, 
      { responsivePriority: 2 }, 
      { responsivePriority: 4 }, 
      { responsivePriority: 3 }, 
      { responsivePriority: 5 }, 
      { responsivePriority: 6 }, 
      { responsivePriority: 7 } 
     ], 
     "columnDefs": [ 
      { "type": "alt-string", targets: 5}, 
      { "type": "alt-string", targets: 6}, 
     ] 
    }); 

table.ajax.reload(null, false); 

Ist es möglich, die Reaktion auf JQuery Tables gegeben zu fangen? Damit ich überprüfen kann, ob das Ergebnis { logged: "false" } ist, und entsprechend handeln?

Antwort

0

dauerte eine Weile und die Hilfe von 'Allan' aus den Foren für Databases. Aber das Problem ist endlich gelöst.

über dataSrc ist es möglich, das Ajax-Ergebnis zu manipulieren, bevor es in der Tabelle gedruckt wird, I, verwenden es jedoch zu prüfen, ob das Ergebnis logged enthält und ob es gleich zu false und entsprechend handeln, wenn es tut:

"ajax": { 
    "data": function(){ 
     $('#active-issues').DataTable().ajax.url(
      "php/get_issues.php?id=" + id + "&customer_id=" + customerid 
     ); 
    }, 
    "dataSrc": function (json) { 
     if(typeof json['logged'] != "undefined") { 
      if (json['logged'] == 'false') { 
       location.replace('php/logout.php'); 
      } 
     } 
     return json.aaData; 
    } 
}, 
0

Ja, kann dies geschehen, wenn Sie Ihre tun Ajax cal extern, dh eine unabhängige Ajax-Anforderung erfüllen die Antwort und die identifizieren, ob die Antwort zu erhalten enthält {protokolliert: „false“} und die bevölkern die Daten an die Daten Tabelle entsprechend.