Я использую saveState: true
, чтобы сохранить условия для моих таблиц данных при упорядочении столбцов или фильтрации результатов по фразе. Когда я обновляю страницу, условия сохраняются благодаря локальному хранилищу.
Это прекрасно работает в одном и том же браузере, но представьте себе довольно распространенный случай, когда после применения порядка и фильтрации к вашей таблице вы хотите поделиться этим состоянием со своим другом, просто скопировав и вставив длинный URL-адрес в строку запроса. так что, когда он / она открывает его, стол выглядит точно так же.
Был плагин, который использовал для этого , но он не поддерживается, и после попытки попробовать он вообще не работает с 1.10
.
Интересно, возможно ли решить эту проблему, используя только собственный код и, возможно, replaceState
, чтобы просто обновить URL, когда это применимо?
Это мой JS.
$(function () {
let table = $('.table').DataTable({
processing: true,
serverSide: true,
stateSave: true,
stateSaveCallback: function (settings, data) {
// save state
},
stateLoadCallback: function (settings) {
// read state and change url?
},
ajax: '{{ route('admin.api.dt.customer.index') }}',
columnDefs: [{
orderable: false,
targets: 2
}],
pageLength: {{ \App\Repositories\Sync\CustomerRepository::PER_PAGE_DATA_TABLES }},
});
});
Основываясь на этом коде, очевидная проблема заключается в том, что URL ajax
является моим жестко заданным маршрутом Laravel. Простая передача строки запроса не работает.
Мой маршрут Laravel просто: http://iosportal.local/admin/api/customer
, и он возвращает JSON
в форме, подходящей для DataTables.
Может кто-нибудь подсказать, как к этому подойти?