JavaScript - хранение данных во время взаимодействия с пользователем - PullRequest
2 голосов
/ 20 апреля 2010

Я работаю над создателем веб-форм, который использует сочетание Jquery и PHP-взаимодействия на стороне сервера. Пока пользователь строит форму, я пытаюсь определить лучший способ сохранить каждый из элементов формы до того, как все данные будут отправлены на сервер. Я посмотрел на следующие методы

  1. Массивы Javascript
  2. XML-документ
  3. Отправка каждого элемента формы на сторону сервера для сохранения в сеансе

Ответы [ 4 ]

2 голосов
/ 20 апреля 2010

Хорошо, плохо и безобразно

Зависит от функциональности и требований вашего приложения, но Javascript, вероятно, будет лучшим способом.Вы можете использовать либо массивы или объекты, или что-либо в JavaScript.Он не зависит от сервера и будет сохранять данные в течение длительного периода времени, пока клиентский сеанс остается присутствующим (окно браузера не закрывается по любой причине), но этого можно легко избежать (см. Мой последний абзац).

Использование XML-документов было бы наихудшим решением, поскольку XML не так хорошо поддерживается на стороне клиента, как вы думаете.

Сеансы на стороне сервера хороши и плохи.Они хороши, если вы время от времени сохраняете промежуточные результаты, поэтому, если сеанс клиента заканчивается по какой-либо причине, пользователь не теряет все данные.Но проблема в том, что срок его действия также может истечь на сервере.

Если бы я был вами, я бы использовал хранилище Javascript и при необходимости иногда отправлял сериализованные результаты JSON на сервер и сохранял их там (на основебизнес-процесс, хранящий эти данные где-то еще, чем сессия, может быть лучшим решением).Я бы выполнил вторую часть (с несколькими комбинациями сторон) только в том случае, если бы знал, что пользователь, скорее всего, будет создавать формы в несколько этапов в течение более длительного периода времени и нескольких клиентских сеансов.но может также использоваться для предотвращения отказов.Тем не мение. Javascript - ваш лучший выбор с возможным взаимодействием на стороне сервера .

Сохранение данных между страницами на клиенте

Помните, что также возможно сохранять данные между страницами на страницесторона клиента.Проверьте sessvars library для этого.Таким образом, даже если страница обновляется или перенаправляется, а затем возвращается, все это может быть сохранено на стороне клиента между этими событиями как волшебство.Изумительная любая довольно крошечная библиотека, которая делала мою жизнь несколько раз.И значительно снизила сложность приложения, которое в противном случае пришлось бы реализовывать с помощью чего-то более сложного.

1 голос
/ 20 апреля 2010

Вы можете проверить PersistJS , который предоставляет кросс-браузерный объект постоянного хранения. Конечно, будучи постоянными , данные, хранящиеся в этой библиотеке, сохраняются во время сеансов, а не только при изменении страницы.

Последняя версия (0.2.0) - здесь & ndash; обратите внимание, что версия в вышеупомянутом связанном посте 0.1.0.

1 голос
/ 20 апреля 2010

Я использовал TaffyDB для хранения данных, и это просто удивительно легко реализовать.

Надеюсь, это поможет вам

0 голосов
/ 20 апреля 2010

Сочетание # 1 (хотя я бы использовал объекты, а не массивы обязательно) и # 3 показалось бы хорошим подходом. Хранение данных локально в браузере (# 1) делает их доступными сразу. Резервное копирование с помощью серверного хранилища на основе сеансов защищает вас от обновления страницы; Вы можете волшебным образом восстановить страницу так же, как она была.

...