Cookie设置在Localhost上但不在实时服务器上?

时间:2009-05-14 16:20:36

标签: javascript cookies

这是我第一次使用JavaScript处理cookie,下面的脚本在我的本地PC上工作正常但是当我在这里上传时:example它失败了。

$(document).ready(function(){

              // Get Cookie 
              var getCookie = document.cookie;

              if(getCookie == "stylesheet=blue")
              {
                    $("[rel=stylesheet]").attr({href : "blue.css"});
              }
              else if(getCookie == "stylesheet=main")
              {
                    $("[rel=stylesheet]").attr({href : "main.css"});
              }

              // Set Stylsheet back to Main
              $('#reset').click(function()
              {
                    $("[rel=stylesheet]").attr({href : "main.css"});

                    var setCookie = document.cookie = "stylesheet=main";
              });   

              // Set Stylsheet Blue
              $('#blue').click(function()
              {
                   $("[rel=stylesheet]").attr({href : "blue.css"});

                   var setCookie = document.cookie = "stylesheet=blue";
              });
        });

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

问题是,您使用的是谷歌分析,它也设置了自己的cookie。所以,在阅读document.cookie属性时,它永远不会有价值,例如。 “stylesheet = blue”,因为它将包含其他cookie的信息。呼叫

alert(document.cookie);

并自行检查值。

您应该使用函数来获取cookie值,例如

function getCookie(N){
   if(N=(new RegExp(';\\s*'+N+'=([^;]*)')).exec(';'+document.cookie+';'))
      return N[1]
}

或使用jQuery cookie plugin

答案 1 :(得分:1)

当你收回cookie时,它不仅仅是字符串“stylesheet = blue”,还包含其他信息。

对我来说,我回来的字符串看起来像这样:

"stylesheet=blue; __utma=168444603.22445052401845424.1242318397.1242318397.1242318397.1; __utmb=168444603.5.10.1242318397; __utmc=168444603; __utmz=168444603.1242318397.1.1.utmcsr=stackoverflow.com|utmccn=(referral)|utmcmd=referral|utmcct=/questions/864324/cookie-sets-on-localhost-but-not-on-live-server"

检查字符串是否包含“stylesheet = blue”而不是检查等值。

编辑:看看@Rafael说的话。我喜欢JQuery cookie插件

答案 2 :(得分:0)

您是否尝试过向Cookie添加过期日期以便设置它?

document.cookie = "stylesheet=blue; expires=Thu, 5 May 2011 20:47:11 UTC; path=/"

这是一个硬编码示例,但您可以根据需要设置日期时间。