То, что я хочу сделать, - это создать переменную, дать ей значение, закрыть и снова открыть окно, а также получить значение, которое я установил на последнем сеансе. Каков самый простой способ сделать это? Ответы JQuery приветствуются.
JS как кэшировать переменную
Ответ 1
Используйте localStorage. Он постоянно работает над сеансами.
Запись:
localStorage['myKey'] = 'somestring'; // only strings
Чтение:
var myVar = localStorage['myKey'] || 'defaultValue';
Если вам нужно хранить сложные структуры, вы можете сериализовать их в JSON. Например:
Чтение:
var stored = localStorage['myKey'];
if (stored) myVar = JSON.parse(stored);
else myVar = {a:'test', b: [1, 2, 3]};
Запись:
localStorage['myKey'] = JSON.stringify(myVar);
Обратите внимание, что вы можете использовать несколько ключей. Все они будут получены всеми страницами в том же домене.
Если вы не хотите быть совместимым с IE7, у вас нет причин использовать устаревшие и мелкие куки.
Ответ 2
У вас есть три варианта:
- Файлы cookie: https://developer.mozilla.org/en-US/docs/DOM/document.cookie
- DOMStorage (sessionStorage или localStorage): https://developer.mozilla.org/en-US/docs/DOM/Storage
- Если ваши пользователи вошли в систему, вы можете сохранить данные в своей серверной БД, которая привязана к пользователю (или группе)
Ответ 3
Вы могли бы создать файл cookie, если это разрешено в вашем требовании. Если вы решите взять маршрут cookie, решение может быть следующим. Также преимущество с cookie заключается в том, что после закрытия браузера браузера и повторного открытия, если файл cookie не был удален, значение будет сохранено.
Cookie * Создание и сохранение файлов cookie: *
function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}
Функция, которая вернет указанный файл cookie:
function getCookie(c_name)
{
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++)
{
x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
x=x.replace(/^\s+|\s+$/g,"");
if (x==c_name)
{
return unescape(y);
}
}
}
Отобразить приветственное сообщение, если файл cookie установлен
function checkCookie()
{
var username=getCookie("username");
if (username!=null && username!="")
{
alert("Welcome again " + username);
}
else
{
username=prompt("Please enter your name:","");
if (username!=null && username!="")
{
setCookie("username",username,365);
}
}
}
Вышеупомянутое решение сохраняет ценность через файлы cookie. Это довольно стандартный способ, не сохраняя значения на стороне сервера.
Jquery
Задайте значение для хранилища сеансов.
JavaScript:
$.sessionStorage( 'foo', {data:'bar'} );
Получить значение:
$.sessionStorage( 'foo', {data:'bar'} );
$.sessionStorage( 'foo' );Results:
{data:'bar'}
Локальное хранилище Теперь давайте взглянем на локальное хранилище. Допустим, например, у вас есть массив переменных, которые вы хотите сохранить. Вы можете сделать следующее:
var names=[];
names[0]=prompt("New name?");
localStorage['names']=JSON.stringify(names);
//...
var storedNames=JSON.parse(localStorage['names']);
Пример сервера с помощью ASP.NET
Добавление в Sesion
Session["FirstName"] = FirstNameTextBox.Text;
Session["LastName"] = LastNameTextBox.Text;
//При извлечении объекта из состояния сеанса, // соответствующий тип.
ArrayList stockPicks = (ArrayList)Session["StockPicks"];
// Write the modified stock picks list back to session state.
Session["StockPicks"] = stockPicks;
Я надеюсь, что ответили на ваш вопрос.
Ответ 4
проверить мой js lib для кеширования: https://github.com/hoangnd25/cacheJS
Мое сообщение в блоге: Новый способ кэширования данных с помощью Javascript
Особенности:
- Удобно использовать массив в качестве ключа для сохранения кеша
- Поддержка массива и localStorage
- Очистить кеш по контексту (очистить все сообщения в блоге с помощью authorId = "abc" )
- Без зависимости
Основное использование:
Сохранение кеша
cacheJS.set({blogId:1,type:'view'},'<h1>Blog 1</h1>');
cacheJS.set({blogId:2,type:'view'},'<h1>Blog 2</h1>', null, {author:'hoangnd'});
cacheJS.set({blogId:3,type:'view'},'<h1>Blog 3</h1>', 3600, {author:'hoangnd',categoryId:2});
Извлечение кеша:
cacheJS.get({blogId: 1,type: 'view'});
Очищающий кеш
cacheJS.removeByKey({blogId: 1,type: 'view'});
cacheJS.removeByKey({blogId: 2,type: 'view'});
cacheJS.removeByContext({author:'hoangnd'});
Поставщик переадресации
cacheJS.use('array');
cacheJS.use('array').set({blogId:1},'<h1>Blog 1</h1>')};