2016-04-08 10 views
0

ソート機能を使用するために、tablesorterとdatatablesの両方を試しました。両方とも、並べ替えの矢印(およびフィルタボックス、ページ... dataTablesで、どちらも機能しませんが)を見ることができますが、それらは変更されますが、データはソートされません。 。ajaxで動作するtablesorterもdataTablesもありません

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>"; 
} 

その後:ここ

は(DataTableのと、それは同じではなく、 'tablesorter' の 'のdataTable' を使用してい

$.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(); 
    } 
}); 

私はPHPでテーブルを作成するアヤックスであります

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

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

データシートでは、無効なjson応答があるというメッセージが表示されます。

"#search_result"は、別のphpファイルに含まれているphpファイル内にあります。

私は間違っていますか?

ありがとうございます。

編集:私は愚かな間違いを発見した、私はいくつかのtbodysを生成していた。私がタグをしばらく外に動かせば、うまくいきます。ごめんなさい。

+0

あなたのsearch.phpレスポンスは何ですか? – Chay22

+0

レスポンスは、コード化され暗号化された後のテーブルのhtmlコードです。次に、それは解読され、ajaxの成功関数でデコードされ、htmlに挿入されるのはテーブルコードだけです。 – vjsp90

答えて

0

JSONのエンコードと処理に問題があるようです。

JSONは単に文字列にすることはできません。これは、配列やオブジェクトにラップする必要があり、あなたがPHP json_encodeを使用するときに、それは、配列

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

注なってきていることを確認してください。私はそれだけでなく、PHPを知らないので、この例では、間違っているかもしれないが。 JavaScriptで今

data HTMLとして追加する準備ができているはず今のアレイ

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

の最初の要素からデータを取得することを確認してください。

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

ありがとう、それは問題ではありませんでした。問題はいくつかのtbodysを生成していたことです。 – vjsp90

関連する問題