Для изменения параметров в адресной строке браузера без перезагрузки страницы вы можете использовать метод `history.pushState` или `history.replaceState` в JavaScript. Эти методы позволяют манипулировать историей браузера, добавляя или изменяя параметры в URL, не перезагружая страницу.
Вот пример того, как вы можете изменить вашу функцию `GetDatesFilter`, чтобы использовать `history.pushState`:
```javascript
function GetDatesFilter(id) {
let category = window.location.pathname.slice(1);
const param_data = {};
param_data["_token"] = "{{ csrf_token() }}";
param_data["code"] = category;
let id_filter = $(id).val();
param_data['fil_' + id_filter] = $(id).val();
const url = new URL(window.location);
url.searchParams.set('fil_' + id_filter, $(id).val());
// Добавьте новый URL в историю без перезагрузки страницы
history.pushState({ path: url.href }, '', url.href);
console.log(url);
// Вызов функции получения продуктов
GetProductByCategory();
}
```
### Примечания:
1. **Методы `pushState` и `replaceState`:**
- `pushState` добавляет новую запись в историю браузера. Пользователь сможет вернуться к предыдущему состоянию, нажав кнопку "Назад".
- `replaceState` заменяет текущую запись в истории, то есть пользователь не сможет вернуться к предыдущему состоянию.
2. **Обработка событий `popstate`:**
- Если вы используете `pushState`, рекомендуется добавить обработчик события `popstate` для управления состоянием, когда пользователь использует кнопки "Назад" или "Вперёд". Например:
```javascript
window.onpopstate = function(event) {
// Ваш код для обработки изменения состояния
// Вы можете обновить интерфейс в зависимости от параметров URL
GetProductByCategory(); // Обновите продукты на основании текущих параметров
};
```
3. **Логика для фильтров:**
- Сохраняйте выбранные фильтры в объекте или массиве, чтобы вы могли легко сбрасывать или восстанавливать значения при изменении URL или на загрузке страницы.
С помощью этих изменений вы сможете добавлять параметры в адресную строку браузера, не перезагружая страницу, и поддерживать состояние выбранных фильтров.