@OstapO

Как передавать параметры в url?

Есть фильтр. Нужно значение активного фильтра передавать параметром в url без перезагрузки страницы.
Пример: ?search=general,news
history.pushState() не подходить
И еще вопрос как потом удалять конкретный параметр з url ?
5d9707c24acc9709328918.png
  • Вопрос задан
  • 1289 просмотров
Решения вопроса 2
sergski
@sergski
web-developer
например, сериалайз формы по change, отправить аяксом, вставить ответ в указный контейнер. не?
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
Без перезагрузки можно менять хэш:
function addFilter(filter) {
  const delimiter = ',';

  // разобрать хэш
  const str = location.hash;
  const hashes = str.slice(str.indexOf('#') + 1).split('&')
  const params = {}
  hashes.forEach(hash => {
    if (!hash) return;
    const [key, val] = hash.split('=')
    params[key] = decodeURIComponent(val)
  })

  // параметр фильтров разобрать, добавить, собрать
  const filters = params.search ? params.search.split(delimiter) : [];
  filters.push(filter); // ["Toster", "Habr"]
  params.search = filters.join(delimiter);

  // собрать обратно
  hashes.length = 0;
  for (p in params) 
    hashes.push([p, encodeURIComponent(params[p])].join('='));
  
  location.hash = '#' + hashes.join('&');
}

addFilter('Toster');
addFilter('Habr');
//#search=Toster%2CHabr
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы