我使用DataTable
插件將新數據繪製到表格中時出現問題。我有表格,顯示存儲在一個模式內的通知#recipientsTable
的接收者。現在,無論何時打開模式,它都會顯示不同的收件人,這些收件人的數據來自服務器的響應。所以這是它的樣子: 如何讓DataTable繪製新結果?
當你點擊這個標記的通知的消息時,這個存儲在女巫表中的模式被顯示。
正如你可以看到它是一個DataTable表,這是我如何做它:
function showNotificationRecipients(app_id) {
var data = {};
$('#myModal').modal('toggle');
data.notificationId = notification_id;
data.appId = app_id;
data.fields = customFields;
var table = $("#recipientsTable").DataTable({
"retrieve": true,
"StateSave": true,
"PaginationType": "full_numbers",
"bPaginate": true,
"bLengthChange": true,
"bFilter": true,
"bSort": false,
"bInfo": true,
"bAutoWidth": false,
"bProcessing": true,
"orderClasses": false,
"processing": true,
"serverSide": true,
"ajax": {
url: "showRecipients.php",
type: "POST",
dataType: "JSON",
data: data
}
});
table.on('xhr', function (e, settings, json) {
console.log('Ajax event occurred. Returned data: ', json);
});
}
所以這個函數打開模態和initalises數據表。所以當我第一次點擊任何通知加載頁面並請求查看它的收件人時,它會向我顯示正確的內容,但是當我請求查看其他通知的收件人時,同一用戶將顯示爲從第一次繪圖和我的網絡中瀏覽器的工具,我看到沒有新的請求showRecipients.php已經發送。我嘗試過各種東西,如:
if ($.fn.dataTable.isDataTable('#recipientsTable')) {
var table = $("#recipientsTable").DataTable({
"ajax": {
url: "showRecipients.php",
type: "POST",
dataType: "JSON",
data: data
}
})
}else {
var table = $("#recipientsTable").DataTable({
"retrieve": true,
"StateSave": true,
"PaginationType": "full_numbers",
"bPaginate": true,
"bLengthChange": true,
"bFilter": true,
"bSort": false,
"bInfo": true,
"bAutoWidth": false,
"bProcessing": true,
"orderClasses": false,
"processing": true,
"serverSide": true,
"ajax": {
url: "showRecipients.php",
type: "POST",
dataType: "JSON",
data: data
}
});
}
另外:
if ($.fn.dataTable.isDataTable('#recipientsTable')) {
"retrieve": true,
"StateSave": true,
"PaginationType": "full_numbers",
"bPaginate": true,
"bLengthChange": true,
"bFilter": true,
"bSort": false,
"bInfo": true,
"bAutoWidth": false,
"bProcessing": true,
"orderClasses": false,
"processing": true,
"serverSide": true,
"ajax": {
url: "showRecipients.php",
type: "POST",
dataType: "JSON",
data: data
}
});
})
}
else {
var table = $("#recipientsTable").DataTable({
"retrieve": true,
"StateSave": true,
"PaginationType": "full_numbers",
"bPaginate": true,
"bLengthChange": true,
"bFilter": true,
"bSort": false,
"bInfo": true,
"bAutoWidth": false,
"bProcessing": true,
"orderClasses": false,
"processing": true,
"serverSide": true,
"ajax": {
url: "showRecipients.php",
type: "POST",
dataType: "JSON",
data: data
}
});
}
這:
table.on('draw', function() {
var json = table.ajax.reload();
});
,但沒有成功。有沒有人有任何想法,我該如何做到這一點?
你確定繪畫事件被解僱嗎? IIRC,每次重新繪製表時都會啓動。模式可能只是顯示/隱藏表,而不重繪它? – Sebastianb