我正在使用以下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 ...
答案 0 :(得分:0)
出于某种原因,按照以下方式重新命名数据表对我有用:
$('.plugins_table').DataTable().ajax.reload();
代替先前的内容:
plugins_table.DataTable().ajax.reload();
其中“ plugins_table ”是表的初始命名变量。
我会对这种“行为...”的解释感兴趣!
答案 1 :(得分:0)
在第一行中,您正在使用api()
,但这仅在您使用.dataTable()
语法初始化数据表时才需要(请注意小'd')。因为您使用的是.DataTable
语法(大写字母'D'),所以您已经在使用DataTables api。
在第二行中,您尝试重新初始化数据表,但是plugins_table
已作为数据表存在。而是像这样刷新它:
plugins_table.ajax.reload();