为什么当我用json数组在PHP中设置cookie时,会显示%sign



当用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)

最新更新