我正在使用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
以禁止点击。 我的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?
答案 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的最后一个正斜杠的路径。