Jquery cookie только на одном активном сайте

0

Привет, я использую плагин 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);
});
  • 0
    когда вы хотите, чтобы срок действия файла cookie истек?
Теги:
cookies
plugins

2 ответа

0

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);
  • 0
    Информация о пользователе должна быть сохранена, когда всплывающее окно закрывается, так как я могу вставить cookie из события click?
  • 0
    Держите ваш код события клика таким же. Вы говорите, что информация cookie не загружается при обновлении страницы . Это связано с тем, что две предоставленные мной строки кода также должны находиться вне события click (AKA, когда DOM загружен и готов), чтобы значение можно было обновлять при загрузке страницы.
Показать ещё 6 комментариев
0

Просто потому, что cookie не вызывается после загрузки страницы. Он просто сохраняет содержимое div, но вы не вызываете его, когда страница обновляется.

<pre><code>
    var cookie = $.cookie('the_cookie');
</code></pre>
  • 0
    Должен ли я добавить этот фрагмент в моем HTML в начале?
  • 0
    В определении jQuery: $ (document) .ready (function () {Точно так же, как событие click.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню