Файлы cookie устанавливаются на Localhost, но не на реальном сервере? - PullRequest
1 голос
/ 14 мая 2009

Я впервые имею дело с файлами cookie в JavaScript, и скрипт ниже работает на моем локальном ПК, но когда я загружаю его здесь: пример , он не работает.

$(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 ]

1 голос
/ 14 мая 2009

Проблема в том, что вы используете Google Analytics, которая также устанавливает свои собственные куки. Таким образом, при чтении свойства 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 плагин

1 голос
/ 14 мая 2009

Когда вы возвращаете 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. Мне нравится плагин cookie JQuery

0 голосов
/ 14 мая 2009

Вы пытались добавить дату окончания срока действия файла cookie, чтобы он был жестко установлен?

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

Это пример с жестким кодом, но вы можете установить дату и время по необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...