使用JQuery和Cookie插件创建一个非url编码值的cookie

时间:2011-09-30 05:19:12

标签: c# javascript jquery asp.net

我在客户端创建一个cookie,并在其中添加3个字符串值,用逗号分隔。该字符串具有特殊字符。问题是当我在后面的代码中获取cookie的值时,cookie的值如下: -

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

我想摆脱这些%的标志和价值观..是否只能取代这些角色?如何让我的cookie没有这些值,只有一些特殊字符的简单文本?

编辑1

我现在正在创建这样的cookie,但问题仍然存在。请帮帮我。

$ .cookie('MyCookie',unescape(myString),{path:'/'},{expires:30});

2 个答案:

答案 0 :(得分:1)

我知道这个帖子很古老,但我刚碰到这个并遇到了raw setting。将其设置为true可以解决我的问题。

答案 1 :(得分:0)

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

所以:%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 亚历