Avatar billede shaya Praktikant
04. juli 2011 - 21:34 Der er 2 kommentarer og
1 løsning

Cookie problem

Hej jeg er ved at lave en side som skal kunne gemme varer inde i en indkøbskurv. Derfor ville jeg bruge cookies. Men når jeg gemmer cookie "test1" fra siden index.html, og loader cookie'n "test1" fra index2.hmtl så er cookie'n "test1" undefined?
Avatar billede Slettet bruger
04. juli 2011 - 22:20 #1
Lad os se noget kode - bare de relevante stumper, ikk'
Avatar billede shaya Praktikant
05. juli 2011 - 10:21 #2
function getC(c)
{
var i,x,y,Cs=document.cookie.split(";");
for (i=0;i<Cs.length;i++)
  {
  x=Cs[i].substr(0,Cs[i].indexOf("="));
  y=Cs[i].substr(Cs[i].indexOf("=")+1);
  x=x.replace(/^\s+|\s+$/g,"");
  if (x==c)
    {
    return unescape(y);
    }
  }
}

function setC(c_name,value)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + 2);
var c_value=escape(value) + ((2==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}
Avatar billede Slettet bruger
07. juli 2011 - 08:11 #3
Din getC er tilsyneladende OK, men der er flere fejl i setC:

- Når man skal ændre indholdet i en Date gøres det med .setTime()
- getDate returnerer kun dagen i måneden (1-31).
- Du har ingen path i dine cookies, så de er bundet til den mappe de er oprettet fra.
- Endelig: (2==null)?"":"blabla" - returnerer ALTID "blabla" ?!?

Jeg vil anbefale at du skifter begge funktioner ud med disse ~ fra Quirksmode: http://quirksmode.org/js/cookies.html
function setC(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 getC(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;
}

function sletC(name) {
    setC(name,"",-1);
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester