Я використовую DataTables (чудовий плагін) для створення списків.
URL-адреса AJAX, яка використовується для цього, має змінні, вкладені в кінець.
"ajax": "ajax/appointments/cancelled.php?appointment_date="+localStorage["ajaxDate"],
де localStorage ["ajaxDate"] = сьогоднішня дата
Ось мій повний код таблиць даних:
var table = $("#cancelled_table").DataTable( {
"ajax": "ajax/appointments/cancelled.php?clinic_id=<? echo $clinic_id ?>&appointment_date="+localStorage["ajaxDate"],
"columns": [
{
"className": "details-control",
"orderable": false,
"data": null,
"defaultContent": ""
},
{ "data": "time" },
{ "data": "first" },
{ "data": "last" },
{ "data": "petname" },
{ "data": "apt" },
{ "data": "species" },
{ "data": "phone" },
{ "data": "status" },
{ "data": "button" }
],
"order": [[1, "asc"]]
} );
// Add event listener for opening and closing details
$("#cancelled_table tbody").on("click", "td.details-control", function () {
var tr = $(this).closest("tr");
var row = table.row( tr );
if ( row.child.isShown() ) {
// This row is already open - close it
row.child.hide();
tr.removeClass("shown");
}
else {
// Open this row
row.child( format(row.data()) ).show();
tr.addClass("shown");
}
} );
Я можу перемалювати цю таблицю, коли інформація про базу даних змінюється за допомогою:
cancelledTable.ajax.reload();
Наведений вище код спрацьовує при натисканні кнопки "Наступний день" .. Зміна localStorage ["ajaxDate"] збільшується на 1.
Проблема полягає в тому, що коли ajax перезавантажується, він не використовує новий localStorage ["ajaxDate"] як дату.
Я б опублікував те, що я спробував, але я не маю жодної ідеї про те, як отримати cancelledTable.ajax.reload (), щоб побачити, як змінна, вкладена в url, змінилася ..
Будь-які ідеї? Дякую
Відповіді:
1 для відповіді № 1Це можна зробити кількома способами, один з них показаний нижче. Я коротко опустив деякі частини вашого коду.
var table = $("#cancelled_table").DataTable({
"ajax": {
"data": function(){
$("#cancelled_table").DataTable().ajax.url(
"ajax/appointments/cancelled.php"
+ "?clinic_id=<? echo $clinic_id ?>"
+ "&appointment_date=" + localStorage["ajaxDate"]
);
}
},
"columns": [
// ...
]
});
Коли інформація про базу даних змінюється, я припускаю, що ви оновите дані в localStorage["ajaxDate"]
. Тоді вам потрібно зателефонувати:
table.ajax.reload();
Це призведе до функції, зазначеної в ajax.data опція, яку потрібно викликати. Ця функція зворотного виклику використовує поточне значення в localStorage["ajaxDate"]
та оновлює URL-адресу запиту Ajax.