Ни таблица, ни dataTables не работают с ajax

Я пробовал оба, tableorter и datatables, чтобы получить функции сортировки. С обоими, я могу видеть стрелки сортировки (и поле фильтра, страницы … с dataTables; хотя они не работают ни один), и они изменяются, но данные не сортируются.

Вот ajax (с dataTables это то же самое, но с использованием ‘dataTable’ вместо ‘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();
}
});

Я создаю таблицу с php:

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

И после этого:

  // 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

Решение

Похоже, что проблема, вероятно, в кодировании и обработке JSON.

JSON не может быть просто строкой. Он должен быть заключен в массив или объект, поэтому при использовании php json_encode убедитесь, что он получает массив

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

Примечание: я не очень хорошо знаю php, поэтому этот пример может быть неправильным.

Теперь в javascript убедитесь, что вы получаете данные из первого элемента массива

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

Теперь data должен быть готовым быть добавленным как HTML.

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]