js에서 document.cookie 설정이 만료되는 문제에 대해
VaScript는 클라이언트 측에서 실행되는 스크립트이므로 Session이 서버 측에서 실행되기 때문에 일반적으로 Session 설정이 불가능합니다.
그리고 쿠키는 클라이언트에서 실행되므로 JS를 사용하여 쿠키를 설정할 수 있습니다.
특정 사용 사례 프로세스에서 페이지 A가 페이지 B로 이동하는 상황이 있다고 가정해 보겠습니다. , A 페이지에서 temp 변수를 사용하여 특정 변수의 값을 저장하는 데 JS를 사용하는 경우 B 페이지에서는 temp의 변수 값을 참조하기 위해 JS를 사용해야 합니다. JS는 제한적이므로 페이지 점프가 발생하거나 페이지가 닫히면 이러한 변수의 값이 다시 로드됩니다. 즉, 저장 효과를 얻을 수 없습니다. 이 문제에 대한 가장 좋은 해결책은 쿠키를 사용하여 변수 값을 저장하는 것입니다. 그러면 쿠키를 설정하고 읽는 방법은 무엇입니까?
우선 쿠키의 구조를 조금 이해해야 합니다. 간단히 말하면 쿠키는 키-값 쌍의 형태, 즉 키=값 형식으로 저장됩니다. 각 쿠키는 일반적으로 ";"로 구분됩니다.
JS가 쿠키를 설정합니다.
페이지 A에서 변수 username("jack")의 값을 쿠키에 저장하려고 하며 키 값은 name이고, 해당 JS 코드는 다음과 같습니다.
다음과 같이 코드를 복사합니다.
document.cookie="name=" 사용자 이름;
JS는 쿠키를 읽습니다.
p>쿠키에 저장된 콘텐츠는 다음과 같습니다: name=jack; 비밀번호=123
B페이지에서 변수 username 값을 가져오는 JS 코드는 다음과 같습니다.
var username=document.cookie.split (";")[0].split("=")[1]; //JS 작업 쿠키 메서드! //쿠키 작성 function setCookie(name, value){var Days = 30; var exp = new Date(); exp.setTime(exp.getTime() 일*24*60*60*1000); document.cookie = name "=" escape (value) "; 만료=" exp.toGMTString ();}
쿠키 읽기
function getCookie(name){var arr, reg=new RegExp("(^| )" name "=([^;]*) (;|$)"); if (arr=document.cookie.match(reg))return unescape(arr[2]); elsereturn null;}
쿠키 삭제 함수 delCookie(name){var exp = new Date(); exp.setTime(exp.getTime() - 1);var cval=getCookie(name);if(cval!=null)document.cookie= name "=" cval ";expires=" .toGMTString();}//예제 setCookie("name", "hayden"); Alert(getCookie("name")); // 사용자 정의 만료 시간을 설정해야 하는 경우 // 그런 다음 위의 setCookie 함수를 바꿉니다. 다음 두 함수 사용; //프로그램 코드 function setCookie(name, value, time){var strsec = getsec(time); var exp = new Date(); document.cookie = name "= " escape (value) "; 만료=" exp.toGMTString();} function getsec(str){alert(str); var str1=str.substring(1, str.length)*1 ; var str2=str.substring (0,1); if (str2=="s"){return str1*1000;}else if (str2=="h"){return str1*60*60*1000;} 그렇지 않으면 (str2=="d
"){return str1*24*60*60*1000;}} //만료 시간 설정의 예입니다. //s20은 20초를 나타냅니다. //h는 시간을 나타냅니다(예: 12시간): h12 // d는 일수입니다(30일인 경우): d30setCookie("name", "hayden", "s20");