2010-07-30 3 views
0

J'ai besoin d'aide pour créer le Javascript nécessaire pour ajouter des valeurs à un cookie existant. Je sais comment le faire en C#, mais il faut le faire en Javascript dans ce scénario.Besoin de l'équivalent Javascript de ce code C# pour ajouter des valeurs à un cookie

Voici le code C#:

HttpCookie myCookie = HttpContext.Current.Request.Cookies["SiteSettings"]; 
myCookie.Values.Add(varName, varValue); 
myCookie.Expires = DateTime.Now.AddYears(1); 
HttpContext.Current.Response.Cookies.Add(myCookie); 

Quelqu'un peut-il me aider à convertir en Javascript? J'ai cherché haut et bas sur internet, et la plupart des tutoriels n'ont pas le moyen de spécifier le cookie (ce site a plus d'un cookie).

Merci beaucoup, Andrew

+1

Vraiment? http://tinyurl.com/cfsuy6 –

Répondre

4

Je ne sais pas où vous avez regardé, depuis le premier coup sur google pour « javascript cookies » est cet excellent article de PPK: http://www.quirksmode.org/js/cookies.html

Il devrait répondre à votre question et expliquer d'autres nuances cookie liées JS, y compris des exemples de fonctions pour gérer les cookies d'une manière plus sensible que la concaténation de chaînes.

2

Je crois:

document.cookie= varName + "=" + varValue + ";expires=" + new Date().toUTCString; 

Cela, cependant, fixe le délai d'expiration présent. Je ne sais pas comment ajouter une année à cela.

+2

var d = new Date(); d.setFullYear (d.getFullYear() + 1); –

1

Il y a quelques bonnes infos sur javascript traitement des cookies ici: http://www.quirksmode.org/js/cookies.html

// from your example 

var myCookie = readCookie("SiteSettings"); 
createCookie(varName, varValue, 365); 

// from http://www.quirksmode.org/js/cookies.html 

function createCookie(name,value,days) { 
    if (days) { 
    var date = new Date(); 
    date.setTime(date.getTime()+(days*24*60*60*1000)); 
    var expires = "; expires="+date.toGMTString(); 
    } 
    else var expires = ""; 
    document.cookie = name+"="+value+expires+"; path=/"; 
} 

function readCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for(var i=0;i < ca.length;i++) { 
    var c = ca[i]; 
    while (c.charAt(0)==' ') c = c.substring(1,c.length); 
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
    } 
    return null; 
} 
0

Cela fonctionne et donnera le résultat souhaité

var d = new Date(); 

document.cookie= varName + "=" + varValue + ";expires=" 
    + new Date((d.getFullYear()+1), d.getMonth(), d.getUTCDate()).toUTCString()); 

voir l'article

Javascript - Cookies

Questions connexes