Javascript Cookie函数不适用于域

时间:2010-05-07 13:20:11

标签: javascript jquery cookies

以下是我使用的功能:

设置Cookie:

function set_cookie ( name, value, exp_y, exp_m, exp_d, path, domain, secure )
{
  var cookie_string = name + "=" + escape ( value );

  if ( exp_y )
  {
    var expires = new Date ( exp_y, exp_m, exp_d );
    cookie_string += "; expires=" + expires.toGMTString();
  }

  if ( path )
        cookie_string += "; path=" + escape ( path );

  if ( domain )
        cookie_string += "; domain=" + escape ( domain );

  if ( secure )
        cookie_string += "; secure";

  document.cookie = cookie_string;
}

阅读Cookie:

function get_cookie ( cookie_name )
{
  var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' );

  if ( results )
    return ( unescape ( results[2] ) );
  else
    return null;
}

删除Cookie:

function delete_cookie ( cookie_name )
{
  var cookie_date = new Date ( );  // current date & time
  cookie_date.setTime ( cookie_date.getTime() - 1 );
  document.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString();
}

我用来构建cookie的Jquery:

    if(get_cookie('visible')== 'no') {
        $("#wrapper").hide();
        $(".help").hide();
        $("#slid .show").show();
        $("#slid .hide").hide();
        } else {
            $("#slid .show").hide();
            $("#slid .hide").show();
        }
    $("#slider").click(function() {
        if(get_cookie('visible')== null) {
            set_cookie('visible','no', 2020, 01,01, '/', 'domain.com');
        } else {
            delete_cookie('visible');
        }
            $(".help").slideToggle();
                $("#wrapper").animate({ opacity: 1.0 },200).slideToggle(200, function() {
                    $("#slid img").toggle();
                });
    });

我尝试使用路径'/'。

为domain.com下存在的所有网页设置Cookie

然而,使用这些函数和jQuery它似乎没有工作,任何人都可以让我知道我哪里出错了?

1 个答案:

答案 0 :(得分:0)

只要domain匹配或省略,domainpath中没有任何内容被escape()破坏,就可以为我工作。

(你不应该使用escape()作为cookie参数:这些没有标准的转义方案。对{em>使用escape() / unescape()通常是一个坏主意。 ;它是一种非标准的编码方案,与URL编码不同,所以如果你尝试从PHP等其他语言读取cookie,你将无法使用任何内置的方法正确解码-in function。如果你想要对cookie值本身进行真正的URL编码,请转到encodeURIComponent / decodeURIComponent,尽管这些仍未用于cookie参数。)