2009-05-14 7 views
1

C'est la première fois que je traite des cookies en JavaScript et le script ci-dessous fonctionne très bien sur mon PC local mais quand je le télécharge ici: example il échoue.Cookie définit Localhost mais pas sur le serveur live?

$(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"; 
       }); 
     }); 

Des idées?

+0

semble fonctionner correctement pour moi sur firefox – Geoff

+0

@Geoff, Que se passe-t-il si vous cliquez sur bleu et rafraîchissez la page? –

+0

je vois ce que c'est maintenant, voir ma réponse - votre cookie a plus de lui alors vous pensez :) – Geoff

Répondre

1

Le problème est que vous utilisez google analytics, qui définit également ses propres cookies. Ainsi, lors de la lecture de la propriété document.cookie, il n'aura jamais la valeur par exemple. "stylesheet = blue", car il contiendra des informations sur d'autres cookies. Appelez le

alert(document.cookie); 

et vérifiez la valeur par vous-même.

Vous devez utiliser une fonction pour obtenir la valeur du cookie, par exemple

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

ou utiliser jQuery cookie plugin

+0

Lovely stuff! acclamations compagnon –

+0

Je suis heureux que je pourrais aider – Rafael

0

Avez-vous essayé d'ajouter une date d'expiration au cookie pour qu'il soit dur?

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

Il s'agit d'un exemple codé en dur, mais vous pouvez définir la date et l'heure selon vos besoins.

+0

merci pour la réponse, malheureusement, il est toujours le même –

1

Lorsque vous obtenez le cookie, il est non seulement la chaîne « stylesheet = bleu », mais contient d'autres informations.

Pour moi, la chaîne que je me regarde en arrière comme ceci:

"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" 

vérifier que la chaîne contient « stylesheet = bleu » au lieu de vérifier equivalance.

Modifier: Voir ce que dit @Rafael. J'aime le plugin cookie JQuery

Questions connexes