【问题标题】:jquery cookie plugin - can't get it working?jquery cookie 插件 - 无法正常工作?
【发布时间】:2011-07-28 14:22:46
【问题描述】:

我在我的网站上有一个顶部栏,其中包含一些重要信息,供我的用户使用(就像 stackoverflow 让你知道当你到达一个新徽章时,你会在顶部看到这个可以关闭的黄色栏)。

我只是想让该栏在访问者访问我的网站时可见。一旦他关闭了栏,就应该保存一个 cookie,并且该栏不会再出现。

因此,我使用的是 jquery cookie 插件。任何想法为什么这不起作用?

    var topInfo = $.cookie('topinfo');
            
    if (topInfo) {
        $('#topBar').hide();
    } else { 
        $('#topBar').show();
    }
    
    $('#topBar .topBarCloser').click(function() {
        $(this).parent().slideUp({
            duration: 300,
            easing: 'easeOutQuint',
            complete: function() { 
                $(this).remove();
                $.cookie('topinfo', true, { expires: 1000 });
            }
        });
    });

我在这里做错了什么?我已将到期日期设置为 1000 天。

【问题讨论】:

  • cookie 是必须的吗?这似乎不是记住“从不”的事情的好方法:) 也许使用 ajax 将值保存到 DB 以表示消息已关闭?或者删除一个值,可能更合适。

标签: jquery jquery-plugins cookies


【解决方案1】:

我不知道您使用的是哪个 cookie 插件,但如果是这个:http://plugins.jquery.com/files/jquery.cookie.js.txt

然后它说:

@param String name The name of the cookie.
@param String value The value of the cookie.

所以 value 必须是一个字符串 - 你已经将它设置为布尔值。这可能意味着 topInfo 将始终为真(因为 false 作为字符串将是“假”,这是真的!)尝试将 cookie 设置为字符串值:

$.cookie('topinfo', "on", { expires: 1000 });

// and then...
if (topInfo === "on") {
  ...
}

【讨论】:

    【解决方案2】:

    $.cookie 无法正常工作的另一个原因(jquery.cookie 不会删除 cookie) - 在这种情况下可能不是,但一般来说,可能有人会查看此页面并需要它信息 - 是因为您为特定路径设置了它,但您试图删除它而不再次设置路径。

    示例:
    如果你这样设置 cookie

    $.cookie("CookieName", "yourValue", { path: '/' });  
    

    然后你尝试用这种方式删除它:

    $.cookie("CookieName",null);  
    

    那不行,你必须写:

    $.cookie("CookieName", null, { path: '/'});  
    

    或者你之前选择的任何路径。

    【讨论】:

    • 非常感谢您的提示。
    • 我很高兴我的信息有用:-)
    猜你喜欢
    • 2012-05-28
    • 1970-01-01
    • 2018-04-14
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多