如何使用Fragment为URL设置jquery cookie?

时间:2011-09-30 21:22:15

标签: jquery cookies

我正在使用jquery cookie插件https://github.com/carhartl/jquery-cookie

我看到了有关如何使用Fragment构建URL的参考: AJAX Applications Crawlable

最终的网址规则如下:

localhost/site/search#!key__searchword&page=1
localhost/site/search#!key__searchword&page=2
localhost/site/search#!key__searchword&page=3

(原始网址应该是这样的:localhost/site/search?_escaped_fragment_key=searchword&page=1

每个上面的页面都有一个按钮,我想检查一下:

  • 如果用户从未点击过,他/她可以点击
  • 如果用户点击了,则再次添加课程voted以禁止点击。
  • 我希望将Cookie设置为7天。

我的javascript代码:

$(document).ready(function(){
  $(".up").live('click',function() {
    $.cookie('up', 'vote', { expires: 7, path: '/', domain: 'http://127.0.0.1/site/' });
    var up = $.cookie('up');
    if (up == 'vote') {
        $(".up").addClass('voted');
    };
  });
});

在任何情况下,jquery cookie对我都不起作用。如何为具有Fragment的URL设置jquery cookie?

2 个答案:

答案 0 :(得分:0)

您应该在之后设置Cookie 检查Cookie是否存在基本实现应该如下所示:

$(document).ready(function(){
  $(".up").live('click',function() {
    var up = $.cookie('upvote');
    var currentLoc = location.hash;
    if (up && up.indexOf(currentLoc) == -1) {
        $(this).addClass('voted');
    };
    else {
        var saveCookie = up ? up + currentLoc : currentLoc;
        $.cookie('upvote', saveCookie, { expires: 7, path: '/', domain: 'http://127.0.0.1/site/' });
        //rest of functions
    }
  });
});

通过location.hash检索当前位置。如果cookie中已存在位置的哈希,则遵循Already voted例程。否则,cookie会更新。

请注意,每次更新Cookie时,此脚本都会阻止用户投票七天。如果要为每个页面单独设置七天惩罚,则可以将哈希用作cookie名称。

答案 1 :(得分:0)

片段永远不会发送到服务器,因此您无法为片段设置cookie。您只能为路径设置一个cookie,它默认为我认为根据RFC的最后一个正斜杠的路径。