2016-04-08 24 views
0

Ich habe beide versucht, Tablesorter und Databases, um Sortierfunktionen zu erhalten. Mit beiden kann ich die Sortierpfeile sehen (und Filterbox, Seiten ... mit Datentabellen; obwohl sie auch nicht funktionieren), und sie ändern sich, aber die Daten sind nicht sortiert. HierWeder Tablesorter noch DataTables arbeiten mit AJAX

ist die Ajax (mit Tables ist es das gleiche, aber mit 'Datatable' anstelle von 'tablesorter'

$.ajax({ 
    type: "GET", 
    url: "search.php", 
    data: {data : encrypted.data, salt: enc_salt}, 
    success: function(enc_response){ 
     var response = decrypt_cryptojs(enc_response, encrypted.salt); 
     var data = JSON.parse(response); 
     $("#search_result").html(data); 

     // Initialise tablesorter 
     $('#search_table').tablesorter(); 
    } 
}); 

ich die Tabelle mit PHP erstellen.

if (mysqli_num_rows($result) > 0) { 
    $message .= "<table id='search_table' class='tablesorter'> 
     <thead><tr> 
      <th id='search_user'>Usuario</th> 
      <th id='search_name'>Nombre</th> 
      <th id='search_surnames'>Apelidos</th> 
      <th id='search_email'>Correo</th> 
      <th id='search_role'>Rol</th> 
      <th id='search_access'>Acceso</th> 
      <th id='search_center'>Centro</th> 
      <th id='search_edit'></th> 
      <th id='search_delete'></th> 
     </tr></thead>"; 
    while ($row = mysqli_fetch_row($result)) { 
     // Define $id 
     $id = $row[7]; 

     // Replace space(" ") whith "&#32" to avoid errors inside functions 
     $user = str_replace(" ", "&#32", $row[0]); 
     $name = str_replace(" ", "&#32", $row[1]); 
     $surnames = str_replace(" ", "&#32", $row[2]); 
     $center = str_replace(" ", "&#32", $row[6]); 

     $message .= "<tbody><tr> 
       <td>" . $row[0] . "</td>" . 
       "<td>" . $row[1] . "</td>" . 
       "<td>" . $row[2] . "</td>" . 
       "<td>" . $row[3] . "</td>" . 
       "<td>" . $row[4] . "</td>" . 
       "<td>" . $row[5] . "</td>" . 
       "<td>" . $row[6] . "</td>" . 
       "<td>" . 
        "<input type='image' src='../resources/edit.png' id='edit_" . $row[0] . "' class='edit' onclick=edit_user(\"$user\",\"$name\",\"$surnames\",'$row[3]','$row[4]','$row[5]',\"$center\",'$id') title='Editar'></button>" . 
       "</td>" . 
       "<td>" . 
        "<input type='image' src='../resources/delete.png' id='delete_" . $row[0] . "' class='delete' onclick=delete_user('$user','$row[4]') title='Eliminar'></button>" . 
       "</td> 
      </tr>"; 
    } 
    $message .= "</tbody></table>"; 
    $message .= "<div id='modify_panel'></div>"; 
} 

Und danach:

// Encode the message using json 
    $response = json_encode($message); 

    // Encrypt the response and send it. 
    $enc_response = encrypt_cryptojs($response, $salt); 
    echo $enc_response; 

mit Datentabellen I Meldung kann sagen, dass ich eine ungültige json Antwort haben.

"#search_result" befindet sich in einer PHP-Datei, die in einer anderen PHP-Datei enthalten ist.

Was mache ich falsch?

Vielen Dank.

EDIT: Ich habe den dummen Fehler gefunden, ich habe mehrere tbodys generiert. Wenn ich das Tag außerhalb der while verschieben, funktioniert es. Es tut uns leid.

+0

Was ist Ihre search.php Antwort? – Chay22

+0

Die Antwort ist der HTML-Code für die Tabelle nach dem Codieren und Verschlüsseln. Dann wird es in der Ajax-Erfolgsfunktion entschlüsselt und entschlüsselt, und was es in den HTML-Code eingefügt hat, ist nur der Tabellencode. – vjsp90

Antwort

0

Es sieht so aus, als ob das Problem bei der Codierung und Verarbeitung des JSON wahrscheinlich ist.

JSON kann nicht nur eine Zeichenfolge sein. Es muss in einem Array oder ein Objekt gewickelt werden, so dass, wenn Sie PHP verwenden json_encode stellen sicher, dass es

// Encode the message using json 
$response = json_encode(array($message)); 

Hinweis einen Array bekommen: Ich weiß nicht, php, dass gut, so dass dieses Beispiel könnte falsch sein.

Jetzt im JavaScript aktivieren, stellen Sie sicher, die Daten aus dem ersten Element des Arrays

var data = JSON.parse(response)[0]; 

Nun ist die datasollte bereit sein als HTML hinzugefügt werden, erhalten.

$("#search_result").html(data); 
+0

Danke, das war nicht das Problem. Das Problem war, dass ich mehrere tbodys generierte, sorry. – vjsp90

Verwandte Themen