当用javascript设置一个带有数据数组的cookie时,我会得到以下输出:
{"s1q1":"test","s1q2":"test2"}
但是当在php中设置cookie时,我会得到以下输出:
%7B%22s1q1%22%3A%22test%22%2C%22s1q2%22%3A%22test2%22%7D
php:中使用的代码
$cookieData=array(
's1q1' => 'test',
's1q2' => 'test2',
);
setCookie('calcCookie', json_encode($cookieData), time()+24*60*60*1000);
如何使此cookie看起来像javascript cookie?
cookie在发送时会自动进行URL编码,要设置原始cookie,您应该使用setrawcookie
函数
$cookieData=array(
's1q1' => 'test',
's1q2' => 'test2',
);
setrawcookie('calcCookie', json_encode($cookieData), time()+24*60*60*1000);
注意:不确定在访问它们时是否会正确解码。
有点笨拙,但这解决了问题:
in js:
var cookie = getCookie('calcCookie');
cookie = cookie.replace(/%7B/g, "{").replace(/%22/g, '"').replace(/%7D/g, "}").replace(/%3A/g, ":").replace(/%2C/g, ",")
cookie = JSON.parse(cookie)