2011-06-22 4 views
3

En utilisant Javascript, je veux créer un cookie avec la valeur d'un champ de saisie avec l'identifiant "username" chaque fois que l'on appuie sur un bouton. Je veux ensuite lire ce cookie et l'afficher sur le site. Bien que je viens d'essayer ceci pour tester ma connaissance des cookies, je voudrais maintenant savoir la solution à ce problème, car mon code ne fonctionne pas.Problème avec Javascript & Cookies

Je vais être en utilisant ces deux fonctions de elated.com:

function set_cookie (name, value, exp_y, exp_m, exp_d, path, domain, secure) 
{ 
var cookie_string = name + "=" + escape (value); 

if (exp_y) 
{ 
    var expires = new Date (exp_y, exp_m, exp_d); 
    cookie_string += "; expires=" + expires.toGMTString(); 
} 

if (path) 
    cookie_string += "; path=" + escape (path); 

if (domain) 
    cookie_string += "; domain=" + escape (domain); 

if (secure) 
    cookie_string += "; secure"; 

document.cookie = cookie_string; 




function get_cookie (cookie_name) 
{ 
var results = document.cookie.match ('(^|;) ?' + cookie_name + '=([^;]*)(;|$)'); 

if (results) 
    return (unescape (results[2])); 
else 
    return null; 
} 

Lorsque le bouton est pressé cette fonction va fonctionner:

function Register() 
{ 
var username = document.getElementById("username").value; //Read the input value 
set_cookie("username", username, 2012, 12, 23); //Set the cookie 
document.write(get_cookie("username")); //Read the cookie 
} 

Chaque fois que je tente de lancer cela, la fonction get_cookie renvoie null. Cela signifie qu'il fonctionne au moins avec succès, mais qu'il ne trouve aucun cookie nommé "nom d'utilisateur", même si je l'ai simplement créé. Quelqu'un peut-il aider?

+0

Quelle est la valeur de 'document.getElementById (" nom d'utilisateur "). Value'? –

+0

C'est tout ce que l'utilisateur entre . – LonelyWebCrawler

+0

Eh bien, oui. Mais êtes-vous sûr que le nom d'utilisateur est en train d'être défini (en javascript)? Fondamentalement, quelle est la valeur de 'username' à' var username = document.getElementById ("nom d'utilisateur"). Value; '? –

Répondre

2

Vous dites que vous utilisez Chrome. Chrome (et Chromium) ne permettent pas de définir ou d'accéder aux cookies sur les pages locales, comme une décision délibérée pour des raisons de sécurité (voir http://code.google.com/p/chromium/issues/detail?id=535#c3). Le code que vous avez posté fonctionne si mis sur un serveur et envoyé, mais ne se comportera pas correctement si vous ouvrez la page à partir de votre système local sous la forme d'un fichier: // URL. C'est aussi pourquoi le jsfiddle fonctionne. Certains autres navigateurs autorisent les cookies dans les pages locales, donc si vous souhaitez tester JavaScript et les cookies localement, il vaut mieux essayer l'un d'entre eux. Firefox leur permet le comportement attendu, bien qu'ils aient envisagé de le changer et pourraient le faire à l'avenir. Chrome dispose également d'un indicateur de ligne de commande --enable-file-cookies que vous pouvez utiliser lors des tests, mais ils ne le recommandent pas pour un usage quotidien.

Vous pouvez également mettre votre page sur un serveur et y tester. L'un des services d'hébergement gratuit ou une instance de Apache ou similaire sur votre ordinateur local fonctionnerait. La partie importante est juste que la page est accessible via HTTP.

+0

Merci, mais j'ai déjà résolu cela;) – LonelyWebCrawler