/ / DataTables - Nowe parametry AJAX w ajax.reload () - jquery, ajax, datatables

Tabele danych - Nowe parametry AJAX na ajax.reload () - jquery, ajax, datatables

Używam DataTables (świetna wtyczka) do tworzenia list.

Adres URL AJAX używający do tego celu ma zmienne zagnieżdżone na końcu.

 "ajax": "ajax/appointments/cancelled.php?appointment_date="+localStorage["ajaxDate"],

gdzie localStorage ["ajaxDate"] = dzisiejsza data

Oto mój pełny kod danych:

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");
}
} );

Mogę przerysować tę tabelę, gdy informacje o bazie danych zmienią się na:

cancelledTable.ajax.reload();

Powyższy kod jest wyzwalany po kliknięciu „Następny dzień”. Lokalny magazyn [„ajaxDate”] var zostaje zwiększony o 1.

Problem polega na tym, że po ponownym załadowaniu ajax nie używa nowego localStorage ["ajaxDate"] jako daty.

Chciałbym opublikować to, co próbowałem, ale nie mam jednego pomysłu, jak uzyskać anulowaneTable.ajax.reload (), aby zobaczyć, że zmienna zagnieżdżona w adresie URL uległa zmianie.

Jakieś pomysły? Dziękuję Ci

Odpowiedzi:

1 dla odpowiedzi № 1

Można to zrobić na wiele sposobów, jeden z nich pokazano poniżej. Dla zwięzłości pominąłem niektóre części twojego kodu.

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": [
// ...
]
});

Kiedy zmieniają się informacje o bazie danych, zakładam, że aktualizujesz dane localStorage["ajaxDate"]. Następnie musisz zadzwonić:

table.ajax.reload();

Spowoduje to, że funkcja określona w ajax.data opcja do wywołania. Ta funkcja zwrotna używa bieżącej wartości w localStorage["ajaxDate"] i aktualizuje adres URL żądania Ajax.