/ / DataTables - Нові параметри AJAX на ajax.reload () - jquery, ajax, datatables

DataTables - Нові параметри AJAX на ajax.reload () - jquery, ajax, data tables

Я використовую 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.