Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Хранимая область данных. (https://javascript.ru/forum/misc/2551-khranimaya-oblast-dannykh.html)

PolarWolf 14.01.2009 15:41

Хранимая область данных.
 
Здравствуйте, возникла проблема.
Есть javascript, который работает с определенным набором данных, после того как он отработает данные записываются в сессию, данный скрипт запускается несколько раз, после каждого запуска данные из сессии считываются и обрабатываются по новой. Этот случай работает только для одного экземпляра данных. Необходимо, чтобы экземпляров было несколько, соответственно сессия уже для этого не подходит, как это организовать?
Пришла мысль создать массив, каждый эл. которого был бы экземпляром данных, но при перезапуске скрипта, все естественно затирается, т.к. массив определен внутри самого скрипта... замкнутый круг :confused:

Octane 14.01.2009 15:49

Хранение данных в браузере

PolarWolf 14.01.2009 16:07

Не совсем то...
Какие еще могут быть варианты?

Kolyaj 14.01.2009 16:19

Цитата:

Сообщение от PolarWolf
Не совсем то...

А че надо-то? И что такое сессия в вашем понимании?

x-yuri 14.01.2009 16:27

Цитата:

Есть javascript, который работает с определенным набором данных, после того как он отработает данные записываются в сессию
сессия на сервере?

Цитата:

Не совсем то...
Какие еще могут быть варианты?
что не устраивает?

<Pool> 14.01.2009 16:40

Может вариантом будет использовать cookie? Сформировать, задать им время хранения и пусть себе лежат.

PolarWolf 14.01.2009 16:43

session.sorder = sorder;
sorder - набор данных.

Хотелось бы еще какие-нить варианты рассмотреть )
Есть подозрение, что не получится с вышеназванным вариантом.

Octane 14.01.2009 16:52

Вы про серверный JavaScript и Session Management Service чтоли?

PolarWolf 14.01.2009 16:55

Я в этом не очень силен, т.к. раньше не приходилось работать, видимо о нем )

x-yuri 14.01.2009 17:00

а, ну если серверный, то storage.js не подойдет
а сессии как раз для того и предназначены, чтобы хранить информацию между запросами, чем они вас не устраивают?

Octane 14.01.2009 17:02

Мы от вас пытаемся добиться внятного ответа, что за сессии в JavaScript вы имеете ввиду? Где исполняется JavaScript, в браузере или же это серверная реализация JavaScript?

PolarWolf 14.01.2009 17:07

Есть, допустим два контракта. Если запустить один из них, в сессии будут данные этого контракта, при запуске второго данные затираются и записываются новые. Как сделать, чтобы, например, в сессии храенить несколько экземпляров данных и получать к ним доступ по какому-то ключу.

x-yuri 14.01.2009 17:14

значением элемента в сессии может быть массив? если нельзя, то можно сериализовать массив, а при получении его надо будет десериализовать. В крайнем случае можно эмулировать массив, использовать ключи типа: contract_1, contract_2

PolarWolf 14.01.2009 17:39

В сессию записываются и массивы и простые типы данных.
session.sorder = sorder; (выборка данных из БД)
session.sid = sid; (ID контракта)
Соответственно есть шаги по работе с контрактом, при переходе на новый шаг, скрипт перезапускается и выполняется новая функция, но использующая данные с прошлого шага.
Я совершенно не представляю как с помощью сессии организовать массив данных, элементами которого будут являться экземпляры данных по контрактам. Вернее представляю, но внутри самого скрипта, соответственно после каждого запуска это все будет инициироваться по новой и данные потеряются.

Если можно, вставь плиз код с примером, как это реализуется.

x-yuri 14.01.2009 17:44

ну если у тебя javascript и в сессии могут храниться массивы, то для начала стоит инициализировать массив
if (! session.sorder)
    session.sorder = [];

добавление в массив
session.sorder.push( obj );

может быть понадобится временная переменная
var sorder = session.sorder
sorder.push( obj );
session.sorder = sorder

но это я уже не знаю, т.к. с сессиями в js не работал

Андрей Параничев 14.01.2009 17:55

PolarWolf,
Что за библиотеку вы используете? В каком контексте работает JavaScript - в браузере или в .NET может быть? Что за сессии, про которые вы говорите, в нативном JavaScript реализации сессий не существует.

x-yuri 14.01.2009 17:59

о, PolarWolf, попробуйте вставить alert(1); куда-нибудь, если неуверены где исполняется javascript: на клиенте или на сервере)) должно появится диалоговое окно с единицей, если клиентский. Но больше похоже на серверный

Kolyaj 14.01.2009 18:25

Цитата:

Сообщение от x-yuri
а, ну если серверный, то storage.js не подойдет

storage.js я бы вообще не посоветовал использовать в том виде, в котором он там представлен. Запаритесь дебажить.


Часовой пояс GMT +3, время: 07:44.