使用Javascript问题设置测试cookie

时间:2011-09-09 14:23:14

标签: javascript jquery html cookies

所以目前我正在努力在用户的浏览器中设置一个cookie ......这就是我这样做的方式:

    var cookiename = "benjaminpotter_welcome";
    var cookievalue = "visited";
    var date = new Date();
    date.setTime(date.getTime()+604800000)
    var cookieExpiration = date.toGMTString();
    var cookiepath = "; path=/";
    var myCookie = cookiename + "=" + cookievalue + ";expires=" + cookieExpiration + path;
    document.cookie = myCookie;

这就是我试图接收它的方式:

    function readCookie(benjaminpotter_welcome) {
     cookieName = cookieName.replace(/([.\\+\-*:\/?!|^${}()\[\]])/g, '\\$1');
     var re = new RegExp('[; ]'+cookieName+'=([^\\s;]*)');
     var sMatch = (' '+document.cookie).match(re);
     if (cookieName && sMatch){ 
     var cookieval = unescape(sMatch[1]);
     }else{
     var cookieval = '';
     };
    };

事情是它根本不起作用......

这就是我想要发生的事情......我想在用户的浏览器中设置一个名为'benjaminpotter_welcome'的cookie,其值为'visited'。

然后我需要请求那个cookie(当然在下一页上加载)并测试它是否''访问',执行哪些代码(或者在我的情况下不执行。

以下是我的网站在尝试使用此代码时无法正常工作的部分:

<script type="text/javascript">
        function readCookie(benjaminpotter_welcome) {
         cookieName = cookieName.replace(/([.\\+\-*:\/?!|^${}()\[\]])/g, '\\$1');
         var re = new RegExp('[; ]'+cookieName+'=([^\\s;]*)');
         var sMatch = (' '+document.cookie).match(re);
         if (cookieName && sMatch){ 
         var cookieval = unescape(sMatch[1]);
         }else{
         var cookieval = '';
         };
        };

$(document).ready(function(){

    $("#thanks").fadeOut(0);
    $("#overlay_big").fadeOut(0);
    readCookie();
    if(cookieval == 'visited'){
    }else{
        $("#overlay_big").delay(2000).fadeIn(1000);
    };
});
</script>

1 个答案:

答案 0 :(得分:2)

您在方法中设置cookieval,这使其成为私有变量。尝试:

function readCookie(cookieName) {
    cookieName = cookieName.replace(/([.\\+\-*:\/?!|^${}()\[\]])/g, '\\$1');
    var re = new RegExp('[; ]'+cookieName+'=([^\\s;]*)');
    var sMatch = (' '+document.cookie).match(re);

    return cookieName && sMatch ? unescape(sMatch[1]) : '';
};

和你的DOM准备好了:

$(document).ready(function(){
    $("#thanks").fadeOut(0);
    $("#overlay_big").fadeOut(0);
    var cookieval = readCookie("benjaminpotter_welcome");
    if(!cookieval == 'visited'){
        $("#overlay_big").delay(2000).fadeIn(1000);
    };
});

应该这样做。

如果您了解自己的代码,我建议jquery.cookie plugin使用javascript处理Cookie。