2011-09-30 62 views
3

我在客户端创建一个cookie并在其中添加3个字符串值,并用逗号分隔。该字符串具有特殊字符。问题是,当我在我的代码获取了cookie的值的背后,该cookie值,如下所示: -使用JQuery和Cookie插件创建一个具有非url编码值的cookie

4%2CHealth%20Related%2C%2Fmysite%2FYourKB%2FHealth-Related 

我想摆脱这些迹象%和价值观。是取代这些字符唯一办法?我怎样才能让我的cookie没有这些值,只是简单的文字和一些特殊字符?

编辑1

我现在正在创建这样的cookie,但问题仍然存在。请帮助我。 $'cookie'('MyCookie',unescape(myString),{path:'/'},{expires:30});}};

+0

你也可以考虑使用jquery的cookie插件。 – Cliff

+0

@崖:这就是我用过的。 – Infinity

回答

0

为了完整,这些%xx字符是URL中不允许的某些字符的网址编码。

因此:%2C是逗号,%2F是正斜杠。

考虑到这一点,你在哪里再次检查cookie的值?

此代码的工作,并为您提供了正确的值作为警告:

<html> 
    <head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"> </script> 
    <script src="https://raw.github.com/carhartl/jquery-cookie/master/jquery.cookie.js"></script> 
    </head> 
    <body> 
<script language="javascript"> 
<!-- 
$(function(){ 
    var myString = '4%2CHealth%20Related%2C%2Fmysite%2FYourKB%2FHealth-Related'; 
    $.cookie('MyCookie', unescape(myString)); 
    alert($.cookie('MyCookie')); 
    }); 
--> 
</script> 
    </body> 
</html> 

所以基本上你的代码上面应该工作,但如果你是在服务器上检查确保你的服务器端技术解码值以及。在ASP.NET中,这是在你调用Request.Cookies [“MyCookie”]时自动完成的,但是AFAIK值只能作为URL编码值传输,所以必须在服务器上重新解码。

HTH 亚历

1

我知道这个线程是古老的,但我只是碰到了这一点,并在整个raw setting来了。将其设置为true解决了我的问题。