数据表重新加载失败
DataTables Reloads unsuccessful
我正在使用以下 CDN 版本的 Datatables (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>
当我对页面进行 'manual' 重新加载/刷新时,table/页面会使用正确的数据/更改重新加载,但我无法让 API 重新加载 [=26] =] 成功 ajax 调用后...
出于某种原因,按照以下方法重命名数据table 对我有用:
$('.plugins_table').DataTable().ajax.reload();
代替之前的:
plugins_table.DataTable().ajax.reload();
其中“plugins_table”是 table 的初始命名变量。
我对这种“行为”的解释感兴趣...!
在第一行中您使用了 api()
,但这仅在您使用 .dataTable()
语法初始化数据表时才需要(注意小的 'd')。因为您正在使用 .DataTable
语法(使用 capital 'D'),所以您已经在使用 DataTables api.
在第二行中,您试图重新初始化数据表,但 plugins_table
已经作为数据表存在。相反,像这样刷新它:
plugins_table.ajax.reload();
我正在使用以下 CDN 版本的 Datatables (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>
当我对页面进行 'manual' 重新加载/刷新时,table/页面会使用正确的数据/更改重新加载,但我无法让 API 重新加载 [=26] =] 成功 ajax 调用后...
出于某种原因,按照以下方法重命名数据table 对我有用:
$('.plugins_table').DataTable().ajax.reload();
代替之前的:
plugins_table.DataTable().ajax.reload();
其中“plugins_table”是 table 的初始命名变量。
我对这种“行为”的解释感兴趣...!
在第一行中您使用了 api()
,但这仅在您使用 .dataTable()
语法初始化数据表时才需要(注意小的 'd')。因为您正在使用 .DataTable
语法(使用 capital 'D'),所以您已经在使用 DataTables api.
在第二行中,您试图重新初始化数据表,但 plugins_table
已经作为数据表存在。相反,像这样刷新它:
plugins_table.ajax.reload();