Я изучил различные ответы на похожие вопросы, но не смог найти окончательного ответа на мою проблему: У меня есть таблица, которая загружает данные со стороны сервера, используя плагин выбора (в файлах плагинов предварительно загруженных данных CDN ...), как только я выбрал несколько строк в таблице, я отправляю данные обратно для обработки на стороне сервера & попросить перезагрузить таблицу, как показано ниже сценария ... Скрипты на стороне сервера работают нормально, но, очевидно, когда я сделал выбор и хочу запустить другой скрипт на стороне сервера, чтобы сделать что-то с выбранными элементами из таблицы, я бы хотел перезагрузить таблицу - и данные, затронутые этим последним сценарием сервера-соде (...) -. На данный момент я могу достичь этого только путем перезагрузки всей страницы, так как таблица заполнена от моего рендерера 'foreach' l oop. Я хотел бы использовать вызов ajax из определения dataTable, чтобы я мог перезагружать только таблицу ...
У меня есть проблема с определением столбца, которое я не могу обработать из одного решения в другое ( например, из представления данных c '' stati * в сценарии PHP средства визуализации по сравнению с динамическим c представлением данных через ajax call / DataTable определение ). Ниже приведено определение Datatable / Columns с передачей данных на стороне сервера / stati c:
var plugins_table = $('.plugins_table').DataTable({
columnDefs: [{
orderable: false,
className: 'select-checkbox',
targets: 0
}, {
"targets": 2,
"visible": false,
"searchable": false
}],
select: {
style: 'multi',
selector: 'td:first-child'
},
order: [
[1, 'asc']
]
});
$('#choose').on('click', function() {
var ids=[];
$.each(plugins_table.rows('.selected').nodes(), function(i, item) {
var data = plugins_table.row(this).data();
var id=data[2];
ids.push(id);
});
var request = $.ajax({
url: 'indexAjax.php?p=installKnownPlugins',
data: {plugin_ids: ids},
dataType: 'json',
type: 'post'
});
request.done(function (response) {
if (response.result == 'success') {
// Reloads the entire PAGE (*not what I want...!*)
window.location.reload(true);
} else {
alert(response.message);
exit;
}
});
});
Сценарий PHP в визуализаторе:
<table class="plugins_table table table-hover table-striped" id="'plugins_table" >
<thead>
<tr>
<th></th> //For the checkboxes
<th>Nom</th>
<th></th> // for the hidden data (eg the plugin_id...)
</tr>
</thead>
<tbody>
<?php
foreach($plugins AS $plugin){
echo '<tr>';
echo '<td></td>';
echo '<td>'.$plugin['plugin_name'].'</td>';
echo '<td>'.$plugin['plugin_id'].'</td>';
echo '</tr>';
}
?>
</tbody>
</table>
И то, к чему я стремлюсь, это определить Datable & Columns с помощью вызова AJAX, такого как ниже:
var plugins_table = $('.plugins_table').DataTable({
"ajax": "indexAjax.php?p=listPluginsforSite",
"columns": [
// WHERE / HOW ARE THE CHECKBOXES DEFINED ?
{"data": "plugin_name"},
{"data": "plugin_id"}, // The hidden fields
]
});
$('#choose').on('click', function() {
var ids=[];
$.each(plugins_table.rows('.selected').nodes(), function(i, item) {
var data = plugins_table.row(this).data();
var id=data[2];
ids.push(id);
});
var request = $.ajax({
url: 'indexAjax.php?p=installKnownPlugins',
data: {plugin_ids: ids},
dataType: 'json',
type: 'post'
});
request.done(function (response) {
if (response.result == 'success') {
// RELOADS THE TABLE ONLY AND WHAT I WANT!!!
$('.plugins_table').DataTable().ajax.reload();
}
});
Итак, чтобы подвести итог и завершить мой вопрос, я не могу получить правильные определения столбцов для использования выбора / перезагрузки для работы с вызовом ajax для данных ... Извините за длинную затянутую рекламу, но я подумал, что необходимо объяснить мой конкретный случай .. Большое спасибо за чтение и вашу помощь!