即使存在Cookie,也找不到Cookie

时间:2012-03-30 15:08:26

标签: javascript

我有一个非常奇怪的问题,我正在寻找任何可能的想法。我根据是否在客户端的计算机上找到了cookie来加载天桥。在天桥上有一个“不,谢谢”复选框,上面写着“不再显示”。我检查是否在天桥页面中检查过这个:

$(document).ready(function() {
jQuery(window).bind("beforeunload", function(){ setCookieFO('noShowMerkleCpn','true',180);       });
}); 

function setCookieFO(c_name,value,exdays){
if($('#noThanks').attr('checked') ){
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}else{
}
} 

我在Firebug中运行了代码并验证了cookie在文档卸载时保存。我甚至可以进入我的cookie并找到cookie。以下是我检查cookie的方法:

function runFancyBox(){
var idx = document.cookie.indexOf('noShowMerkleCpn');
if(idx < 0 ){
$('#cpnForm').click();
}else{
}
} 

我并不关心cookie的价值。我只是检查它是否存在并显示天桥如果没有。但是,由于某种原因,即使cookie存在,此检查也将返回-1。

额外信息

Cookie保存在

下的flyover.Html页面中
server/bank/ima

查找cookie的脚本位于同一台服务器上

server/bank/ima/script

使用此主机:server

以此路径值保存Cookie
/bank/ima/

是否有任何可能导致此问题的跳出来?有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我会检查两件事。首先,你没有附加设置document.cookie,所以你删除所有以前的cookie(坏主意)。第二,确保将cookie的域和路径设置为与读取它的页面相同的域。

还要注意您对checked属性的使用:

if($('#noThanks').prop('checked'))

http://timmywillison.com/2011/When-to-use-.attr%28%29-and-.prop%28%29.html

答案 1 :(得分:1)

我在localhost和我的服务器上都尝试了你的代码,它运行正常我假设你小心关闭浏览器以便实际设置cookie。我的猜测是你有路径问题,虽然从你对路径的看法来看,它肯定不是很明显。

我将代码保存在我的服务器上,因此您至少可以检查有效的代码。

设置Cookie的网址为:http://www.bridgesights.com/hondobridge/bbohondo/setcookietest.php

测试Cookie的网址是:http://www.bridgesights.com/hondobridge/bbohondo/bbohondo_files/getcookietest.php

虽然这与您的问题无关,但我强烈建议使用jquery-cookie插件来操作cookie。它非常轻巧,易于使用。链接是:https://github.com/carhartl/jquery-cookie