2010-05-25 4 views
3

Je sais écrire/créer des cookies en JavaScript ................................. ........................Lire les cookies avec JavaScript

//Create the cookies 
document.cookie = "Name=" + Name + ";expires=Friday, 31-Dec-2011 12:00:00 GMT; path=/"; 
document.cookie = "Surname=" + Surname + ";expires=Friday, 31-Dec-2011 12:00:00 GMT; path=/"; 
document.cookie = "Number=" + Number + ";expires=Friday, 31-Dec-2011 12:00:00 GMT; path=/"; 
document.cookie = "Email=" + Email + ";expires=Friday, 31-Dec-2011 12:00:00 GMT; path=/"; 
document.cookie = "Country=" + Country + ";expires=Friday, 31-Dec-2011 12:00:00 GMT; path=/"; 
document.cookie = "Company=" + Company + ";expires=Friday, 31-Dec-2011 12:00:00 GMT; path=/"; 
document.cookie = "Title=" + Job + ";expires=Friday, 31-Dec-2011 12:00:00 GMT; path=/"; 

Mais comment puis-je lire chacun d'entre eux en JavaScript parce que je veux remplir les zones de texte La prochaine fois que l'utilisateur viendra au formulaire?

J'ai essayé, mais cela ne fonctionne pas:

var cookieName = ReadCookie("Name"); 
document.getElementById('txtName').value = cookieName; 

Modifier avec réponse:

je le code ............... .....................

<script type="text/javascript"> 

function getCookie(c_name) 
{ 
    if (document.cookie.length>0) 
    { 
     c_start=document.cookie.indexOf(c_name + "="); 
     if (c_start!=-1) 
     { 
     c_start=c_start + c_name.length+1; 
     c_end=document.cookie.indexOf(";",c_start); 
     if (c_end==-1) c_end=document.cookie.length; 
     return unescape(document.cookie.substring(c_start,c_end)); 
     } 
    } 
    return ""; 
} 

function checkCookie() 
{ 
    Name = getCookie('Name'); 
    Surname = getCookie('Surname'); 
    Email = getCookie('Email'); 
    Company = getCookie('Company'); 
    Title = getCookie('Title'); 

    if (Email!=null && Email!="") 
     { 
     //Populate the text boxes.................................. 
     document.FormName.txtName.value = Name; 
     document.FormName.txtSurname.value = Surname; 
     document.FormName.txtEmail.value = Email; 
     document.FormName.txtCompany.value = Company; 
     document.FormName.txtjob.value = Title; 
     } 
    } 

</script> 

et a appelé la fonction checkCookie() comme si de la window.onload

<SCRIPT TYPE='text/javascript' LANGUAGE='JavaScript'><!-- // 

window.onload = initPage; 

function initPage() 
{ 
    checkCookie(); 

} 

// ->

Profitez !!

+4

http://www.quirksmode.org/js/cookies.html – Konerak

+1

@Kon - c'est une bien meilleure référence que le w3schools. –

+0

Eh, quirksmode est correct ... mais un peu verbeux avec toutes les sous-chaînes - essayez http://leaverou.me/2009/12/reading-cookies-the-regular-expression-way/ – James

Répondre

2

De http://w3schools.com/js/js_cookies.asp

set cookies

function setCookie(c_name,value,expiredays) 
{ 
var exdate=new Date(); 
exdate.setDate(exdate.getDate()+expiredays); 
document.cookie=c_name+ "=" +escape(value)+ 
((expiredays==null) ? "" : ";expires="+exdate.toUTCString()); 
} 

obtenir biscuit

function getCookie(c_name) 
{ 
if (document.cookie.length>0) 
    { 
    c_start=document.cookie.indexOf(c_name + "="); 
    if (c_start!=-1) 
    { 
    c_start=c_start + c_name.length+1; 
    c_end=document.cookie.indexOf(";",c_start); 
    if (c_end==-1) c_end=document.cookie.length; 
    return unescape(document.cookie.substring(c_start,c_end)); 
    } 
    } 
return ""; 
} 
+0

ça ne marche vraiment pas du tout –

0

En vous référant à document.cookie vous obtenez toute la chaîne des cookies. Ils sont séparés par des points-virgules.

var cookies = document.cookie.split(';'); // "cookies" will be an array 

Vous pouvez alors faire qu'un objet avec name-> cartographie de valeur:

var cookieMap = {}; 
for (var i = 0; i < cookies.length; ++i) { 
    cookies[i].replace(/^\s*([^=]+)=(.*)$/, function(_, name, val) { 
    cookieMap[name] = unescape(val); 
    }); 
} 

Maintenant, vous pouvez regarder un cookie "MonCookie" comme ceci:

var mycookieVal = cookieMap.mycookie; 

Note ceci a été édité depuis sa version cassée initiale - toujours la même idée mais pas elle devrait réellement fonctionner. L'idée est que la boucle prend chacune des parties de document.cookie qui ont été séparées par des points-virgules, puis divise ensuite chacun de ceux-ci dans une partie nom (avant le "=", sauf les espaces de début) et une partie "valeur" après le "=" à la fin de la partie cookie). La valeur est ensuite stockée dans le "cookieMap" sous le nom donné.

+0

Cool, mais Comment puis-je obtenir un individu? – Etienne

+0

J'ai juste étendu ma réponse - il y a aussi d'autres suggestions dans d'autres réponses, comme des fonctions pour retourner des cookies spécifiques sans avoir à construire une carte. – Pointy

+0

Ne fonctionne pas ....... – Etienne

0

Ce sont beaucoup * beaucoup * de meilleures références que W3Schools (la référence Web le plus terrible jamais fait):

Exemples dérivés de ces références:

// sets the cookie cookie1 
document.cookie = 
'cookie1=test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/' 

// sets the cookie cookie2 (cookie1 is *not* overwritten) 
document.cookie = 
'cookie2=test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/' 

// remove cookie2 
document.cookie = 'cookie2=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/' 

La référence mozilla a même une belle bibliothèque de cookies que vous pouvez utiliser.

Questions connexes