Задать вопрос
@Dark19

Как передать значение на другую страницу и отсортировать по нему?

Привет всем! Есть кнопки на странице single-guides.php со значениями фильтра, мне нужно передать при нажатии на кнопку её значение на другую страницу guides.php и уже на этой странице выбрать переданное значение в фильтре(trigger может) и отсортировать элементы по этому значению. Подскажите как правильно реализовать? Вот пример работы такого фильтра https://ru.airbnb.com/locations/london/battersea
  • Вопрос задан
  • 451 просмотр
Подписаться 1 Оценить 1 комментарий
Решения вопроса 2
ShadowOfCasper
@ShadowOfCasper
Middle User Interface Web Developer
Если не использовать back-side, то можно юзать coockie.
https://learn.javascript.ru/cookie
https://www.w3schools.com/js/js_cookies.asp
Я бы юзал их, ибо не люблю прибегать к back-end для хранения временной информации
Можно передавать через адресную строку (как предложил Никита Полевой ) но в этом методе есть минус. Засирается адресная строка (&key=value) - некрасиво
Ответ написан
@Dark19 Автор вопроса
Сделал через localStorage, мне показалось наиболее удобным и легким решением. Привожу свой код:
$('.js-post-filter').on('click',function(e){
        e.preventDefault();
        var curFilter = $(this).data('filter'),
            guidesPage = site_url+"/guides";
        localStorage.setItem("singleFilter",curFilter);
        window.location.href = guidesPage;
    });

    $(window).on('load',function () {
        var singleFilter = localStorage.getItem("singleFilter");
        if (singleFilter !== null){
            tags.each(function () {
                if($(this).data('filter') === singleFilter) {
                    $(this).trigger('click');
                }
            });
            localStorage.clear();
        }

    });


js-post-filter
- кнопка фильтра на странице single-guides.php, при нажатии берем значение её data атрибута(это значение фильтра по которому происходит сортировка).
site_url+"/guides"
- урл сайта + название страницы в адресной строке на которую нужно передать значение.
localStorage.setItem("singleFilter",curFilter);
- передаем значение на другую страницу под названием
singleFilter
.
window.location.href = guidesPage;
- делаем перенаправление на нужную страницу.
В моем случае понадобилось событие
onload
так как по другому не успевало подхватится переданное значение.
Дальше в переменную
singleFilter
записываем переданное значение и проверяем есть ли оно вообще (проверка null).
tags
- наши кнопки фильтра на странице guides.php. Проходимся по ним циклом и ищем есть ли там совпадение с переданным значением, если есть делаем событие клик по совпавшей кнопке.
localStorage.clear();
- очищаем localStorage.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Создать сессию нужно и сохранить значение переменной в переменной сессии.
php.net/manual/ru/session.examples.basic.php
А как сортировать и где - зависит от конкретного случая.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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