2012-11-18 5 views
0

쿠키를 설정하고 가져 오는 기능이 있습니다. 로컬 호스트에서 코드를 테스트했는데 작동하는 것처럼 보입니다. 그러나 서버에 올려 놓을 때 쿠키가 작동하지 않습니다. 브라우저에서 쿠키를 확인할 수 있지만 function getCookies()을 사용하여 읽으려고해도 작동하지 않습니다.쿠키가 읽히지 않습니다.

질문 :

  • 오전 내가 잘못 쿠키를 설정?
  • 브라우저에서 쿠키를 볼 수 있는데 실용적이지 않은 이유는 무엇입니까?
  • 쿠키를 잘못 읽었습니까?

코드 :

<script type="text/javascript"><!-- 

function getCookie(c_name) 
{ 
var i,x,y,ARRcookies=document.cookie.split(";"); 
alert(ARRcookies); 
for (i=0;i<ARRcookies.length;i++) 
    { 
    x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); 
    y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); 
    x=x.replace(/^\s+|\s+$/g,""); 
    if (x==c_name) 
    { 
    return unescape(y); 
    } 
    } 
} 

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


function readCookie(){ 
    alert("here"); 
    var domain = checkCookie("domain"); 
    var tld= checkCookie("tld"); 
    alert(domain+" "+tld); 
} 

window.onload(readCookie()); 
// --></script> 

업데이트 : readCookie 기능 내부의 경고가 값 있었어야하는 '정의되지 않은'보여줍니다. 내가 ARRcookies를 인쇄하려고하면, 설정 한 '도메인'과 'tld'를 제외한 모든 쿠키를 보여줍니다. 나는 브라우저의 쿠키 목록에 쿠키 '도메인'과 'tld'를 볼 수 있습니다.

var cookie = readCookie(); 
window.onload(cookie); 

그래서이 :

window.onload(readCookie()); 

두 줄에 코드를 분할하는 경우는 쉽게 볼 수 있으며, 다음과 같이

+0

"로드"처리기를 잘못 설정하고 있습니다. 그것은 단지'window.onload = readCookie; '여야합니다. – Pointy

+0

또한 일반적으로 코드가 작동하지 않는 방식이나 예상보다 다르게 작동하는 방식에 대해 구체적으로 설명하는 것이 좋습니다. "작동하지 않는다"고 말하면 사람들이 당신을 도울 수 없습니다. – Pointy

+0

@Pointy 실제로 무엇을하는지, readCookie 함수 내부의 경고는 값이어야하는 'undefined'를 보여줍니다.내가 ARRcookies를 인쇄하려고하면, 설정 한 '도메인'과 'tld'를 제외한 모든 쿠키를 보여줍니다. 나는 브라우저의 쿠키 목록에 쿠키 '도메인'과 'tld'를 볼 수 있습니다. –

답변

0

readCookie 기능을 연결할 수있는 귀하의 코드는 먼저 readCookie을 호출합니다 (서버에서 JavaScript를로드하자 마자 , 전에 document을 초기화했습니다).

readCookie이 반환 된 후 결과는 window.onload 메서드에 전달됩니다. 몇 가지 문제로 연결

는 :

  1. window 객체는 onload 방법이 없습니다. 그것은 당신이 아마 때 바로 readCookie를 호출하지 않으

  2. 을 위해 등록 할 수있는 onload 이벤트를 가지고 있지만, 오히려 그것이 onload 호출 할 싶어요. (뾰족한는 주석으로)

이처럼 등록하여이 작업을 수행 할 수 있습니다 :

window.onload = readCookie; 

을 그래서 당신은 당신의 readCookie 기능을 실행할 수있는 window.onload 이벤트를 설정하는과. 그 단계에서 쿠키를 사용할 수 있습니다.

관련 문제