我正在使用以下CDN版本的数据表(https://cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js)像这样加载到页面底部:
<script type="application/javascript"
src="https://cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js">
</script>
<script type="text/javascript">
$(document).ready(function() {
// On page load: datatable
var plugins_table=$('.plugins_table').DataTable({
"ajax":"indexAjax.php?p=listPluginsforSite",
"columns":[
{"data":"plugin_name"},
{"data":"plugin_site_version"},
{"data":"plugin_uptodate_status"},
{"data":"plugin_activate_choice"},
{"data":"plugin_install_choice"}
],
"language": {
processing: "Traitement en cours...",
search: "Rechercher :",
lengthMenu: "Afficher _MENU_ Plugins",
info: "Affichage du Plugin _START_ à _END_ sur _TOTAL_ ",
infoEmpty: "Affichage du Plugin 0 à 0 sur 0 ",
infoFiltered: "(filtré sur _MAX_ Plugins au total)",
infoPostFix: "",
loadingRecords: "Chargement en cours...",
zeroRecords: "Aucun Plugins à afficher",
emptyTable: "Aucune donnée disponible dans le tableau",
paginate: {
first: "Premier",
previous: " Précédent",
next: "Suivant ",
last: "Dernier"
},
aria: {
sortAscending: ": activer pour trier la colonne par ordre croissant",
sortDescending: ": activer pour trier la colonne par ordre décroissant"
}
},
paging: true,
autoWidth: false,
responsive: true,
pagingType: "full_numbers",
});
// This event is triggered by a button with class '.activate_state' on each row...
$('#plugins_table tbody').on('click', '.activate_choice', function () {
var plugin_id=$(this).data("id") ;
var plugin_active_state=$(this).data("active-state");
var request = $.ajax({
url: 'indexAjax.php?p=togglePluginActiveState',
data: {plugin_id:plugin_id,active_state:plugin_active_state},
dataType: 'json',
type: 'post'
});
request.done(function(response){
if (response.result == 'success') {
// Reload datable: NEITHER commented solutions work !
//plugins_table.api().ajax.reload();
//plugins_table.DataTable().ajax.reload();
}
});
});
});
</script>
当我对页面进行“手动”重新加载/刷新时,表/页面会使用正确的数据/更改进行刷新,但是在成功进行ajax调用之后,我无法获得重新加载表的API ...
由于某种原因,按照以下方式重新命名数据表对我有用:
$('.plugins_table').DataTable().ajax.reload();
代替上一个:
plugins_table.DataTable().ajax.reload();
其中'plugins_table'是表的初始命名变量。
我会对这种“行为...!”的解释感兴趣。