2011-06-13 5 views
0

쿠키를 위해 Headfirst Javascript 책에서이 코드를 가져 왔습니다. 하지만 어떤 이유로 브라우저에서 작동하지 않습니다. 저는 주로 크롬과 ff를 사용하고 있으며 크롬에서 로컬 쿠키를 사용할 수 있도록 설정했습니다. 도움??자바 스크립트 쿠키 코드가 쿠키를 저장하지 않거나 null 쿠키 값을 읽지 않습니까?

<script type="text/javascript"> 


function checkCookie(){ 
    var name = eatCookie("yahooEmail"); 
    if(name) 
     document.getElementById("emailVerf").style.visibility="hidden"; 
    else 
     document.getElementById("emailBody").style.visibility="hidden"; 
} 



function writeCookie(name, val, days){ 

    var expires = ""; 

    if(days){ 
     var date = new Date(); 
     date.setTime(date.getTime + (days * 24 * 60 * 60 * 1000)); 
     expires = "; expires=" + date.toGMTString(); 
    } 

    document.cookie = name + "=" + val + expires + "; path=/"; 

} 

function eatCookie(val){ 
    var search = val + "="; 
    var cookies = document.cookie.split(';'); 

    for(var i=0; i < cookies.length; i++){ 
     var c = cookies[i]; 
     while(c.charAt(0) == ' ') 
      c=c.substring(1, c.length); 
     if(c.indexOf(search) == 0) 
      return c.substring(search.length, c.length); 
    } 
    return null; 

} 

function verEmail(val){ 

    var regex = "[a-zA-Z0-9][@yahoo.com]"; 
    var exp = new RegExp(regex); 

    if(!exp.test(val)){ 
     document.getElementById("email").style.color="red"; 
     alert("Please enter a valid Yahoo email address."); 
     } 
    else{ 
     writeCookie("yahooEmail", val, 7); 
     document.getElementById("emailVerf").style.visibility="hidden"; 
     document.getElementById("emailBody").style.visibility="visible"; 
     } 
} 

</script> 
가 작동하지
+0

은? 쿠키 읽기? 쿠키 작성? 다른 곳? 어떤 오류가 있습니까? – mkilmanas

+0

@mkilmanas 쿠키를 읽거나 쓰는 중 작동하지 않습니다. 쿠키를 읽을 때 null을 반환하므로 페이지가로드 될 때마다 쿠키가없는 것처럼 동작합니다. 그리고 ayahoo는 오타 였지만 이전의 것에서 변경했습니다. 철자가 정확하더라도 제대로 작동하지 않습니다. – banjokaboom

답변

2
당신은 "ayahooEmail"라는 이름의 쿠키를 작성하지만 "yahooEmail"라는 하나를 읽고

어떤 방법으로
+0

글쎄, 당신에게 무엇을 말할지 모르겠다. 나는 "yahooEmail"이라는 쿠키를 쓰고'writeCookie'와'eatCookie'를 사용하여 그것을 잘 읽을 수있다. 마음에 떠오르는 * 유일한 * 것은 당신이 쓰기 전에 쿠키 값을 인코딩하기 위해'encodeURIComponent()'를 사용하고 그것을 읽을 때'decodeURIComponent'를 사용하지 않는다는 것입니다. 쿠키 값에는 등호, 공백, 세미콜론 및 기타 여러 문자가 포함될 수 없습니다. – jmbucknall

+0

@portugusto_programmer : 사실 쿠키를 사용하기위한 [Headfirst JavaScript 코드] (http://headfirstlabs.com/books/)에 소름이 끼칩니다. hfjs/ch03/irock/cookie.js) 값을 인코딩/디코딩하지 않기 때문입니다. 어서! – jmbucknall

+0

나는 그것을 분명히 시험 할 것이다. 그것은 아마 문제 일 것입니다. 고맙습니다. – banjokaboom