При загрузке страницы в переменную searchParams кладется new URLSearchParams(window.location.search);
Далее в момент отправки формы я делаю следуюшее
var formDataObj = $(this).serializeObject(); // беру данные формы как json
for (var key in formDataObj) {
if (formDataObj[key] !== '') {
searchParams.set(key, formDataObj[key]); // добавляю к итератору URLSearchParams
}
}
// Обновляю урлку
window.history.replaceState(
{},
'',
decodeURIComponent(window.location.pathname + '?' + searchParams)
);
Когда на странице нету никакх параметров в урлке - отправка формы их добавляет. Убор каких-либо выбранных опций в форме (в моем случае это фильтры / чекбоксы) при повторной отправке - не удаляет из урлки эти данные так как в моем коде указано лишь условие синхронизации в одну сторону: форма => урлка, так как сайт на php и изначально страница с выбранными опциями в форме будет рендерится сервером.
Что мне прописать чтоб сделать синхронизацию в обратном направлении - отправили форму без параметров или с другими параметрами - затереть текущие и добавить новые?
И как в таком случае гарантировать принадлежность каких-либо параметров из адресной строки конкретно к данной форме а не к другим каким-то опциональным штукам на сайте?
Спасибо
header location? или я чот не понял
Обсуждают сегодня