Шаблон веб-дизайна для изменяемого пользователем списка, который сохраняется при нескольких отправках форм и обновлениях страниц?
Я работаю над веб-приложением (бутылка + стакан + jQuery), где я хотел бы, чтобы у пользователя был несколько изменяемый список элементов, который сохраняется в различных отправках форм и при обновлении страниц. Нажатие на элемент в списке запрашивает у базы данных информацию об этом элементе списка, и эта информация может быть обновлена пользователем. Я бы хотел, чтобы список сохранялся при запросе / обновлении различных элементов списка. Кроме того, для удобства пользователя список позволяет "проверять" (или не проверять) элементы, например, по мере их обработки или просмотра.
Я рассмотрел несколько различных способов сделать это (например, обновить скрытый элемент в каждой форме на странице, а затем использовать управление сеансами для обновления рабочего списка на сервере при каждом обмене данными; используйте Ajax для обновления переменной сеанса каждый раз элемент в списке проверяется или становится "активным" элементом списка), но ни один из них не выглядит ужасно удовлетворительным или элегантным.
У меня вопрос, есть ли стандартный способ обработки такого рода вещей? Конечно, это довольно распространенное требование для подобных веб-приложений.
1 ответ
Дальнейшее исследование на stackru.com (эти ссылки были полезны:
Как отличить сессии в браузере-вкладках?
Управление данными сеанса webapp / потоком контроллера для нескольких вкладок)
вместе с некоторыми полезными беседами с коллегой дал ответ, который должен работать в большинстве современных браузеров, а именно с использованием локального хранилища HTML5. Поскольку список, упомянутый в исходном вопросе, относится только к этому конкретному сеансу пользователя, нет никаких оснований даже передавать эту информацию на сервер. Используя что-то вроде jStorage, сохраняйте список локально при каждом обновлении страницы, а затем извлекайте его снова, используя предопределенный ключ при возврате. Единственная хитрость заключается в том, как поддерживать разные рабочие списки для разных вкладок или окон браузера. Вы не можете сделать это с помощью сеансов или файлов cookie (они являются общими для всех вкладок / окон); тем не менее, вы можете использовать JavaScript для установки (или использовать, если уже установлено) window.name
, Это избавляет вас от необходимости передавать идентификатор вкладки или окна в качестве переменной GET при каждом обращении к серверу, так как вы можете использовать window.name в качестве ключа, под которым хранится локальный список / данные.