Привет, я использую плагин jquery cookie в этом контексте:
$(document).ready(function(){
$('a.close').click(function(){
var user = $('div.popup div.user_information').html();
$.cookie('the_cookie', user, {expires: "7",path: "/", domain: "domain.com"});
message = $.cookie('the_cookie');
$('div.last_seen').html(message);
});
});
Когда я нажимаю "a.close", cookie работает правильно, а html "div.user_information" сохраняется в файле cookie и отображается в html-элементе "div.last_seen".
Текущий URL-адрес:
domain.com/test/index.php#close
Но когда я обновляюсь на этом сайте:
domain.com/test/index.php
Кажется, сессия cookie заканчивается, и поэтому содержимое "div.last_seen" исчезает.
Кто-нибудь знает почему?
Привет и спасибо!
РАБОТАЕТ С ЭТОЙ КОДОМ:
$(document).ready(function(){
$('a.close').click(function(){
var user = $('div.popup div.user').html();
$.cookie('the_cookie', user, {expires: 7, path: "/", domain: "domain.com"});
var message = $.cookie('the_cookie');
$('div.last_seen').html(message);
});
var message = $.cookie('the_cookie');
$('div.last_seen').html(message);
});
EDIT: Я пропустил очень важный момент; проблема заключается в том, что вы никогда не загружаете файл cookie и не изменяете HTML при загрузке DOM, вы делаете это только после нажатия кнопки. Попробуйте скопировать этот фрагмент кода и разместить его вне вашей функции .click()
:
message = $.cookie('the_cookie');
$('div.last_seen').html(message);
К тому же...
Похоже, что ваше значение атрибута expires
- это String, а не целое число, например API. Попробуйте удалить котировки вокруг вашего значения expires
7, чтобы получить:
$.cookie('the_cookie', user, {expires: 7, path: "/"});
ПРИМЕЧАНИЕ. Нет причин устанавливать значение domain
в параметрах, если домен совпадает с тем, где создается файл cookie, как в этом примере. (см. эту ссылку)
РЕДАКТИРОВАТЬ 2: В ответ на комментарий, требующий сохранения нескольких значений, просто сохраните объект JavaScript вместо строки. Попробуйте что-то вроде этого:
var myCookie = {};
myCookie['user'] = $('div.popup div.user_information').html();
myCookie['otherValue'] = "some other value...";
$.cookie('the_cookie', myCookie, {expires: 7,path: "/"});
Затем, чтобы получить доступ к этим значениям из файла cookie, выполните следующие действия:
var myCookie = $.cookie('the_cookie');
var message = myCookie.user; // or you could use myCookie['user']
var otherValue = myCookie.otherValue; // likewise, myCookie['otherValue'] is ok
$('div.last_seen').html(message);
Просто потому, что cookie не вызывается после загрузки страницы. Он просто сохраняет содержимое div, но вы не вызываете его, когда страница обновляется.
<pre><code>
var cookie = $.cookie('the_cookie');
</code></pre>