我的饼干出了问题,我不知道是什么问题。
下面是我的示例test.php
$defaultActions = array(
'1' => '0',
'2' => '0',
'3' => '0',
'4' => '0',
'5' => '0',
'6' => '0',
'7' => '0',
'8' => '0',
'9' => '0',
'10' => '0'
);
$json_str = json_encode($defaultActions);
if (isset($_SERVER['HTTP_COOKIE'])) {
$cookies = explode(';', $_SERVER['HTTP_COOKIE']);
foreach($cookies as $cookie) {
$parts = explode('=', $cookie);
$name = trim($parts[0]);
setcookie($name, '', time()-1000);
setcookie($name, '', time()-1000, '/');
}
}
setcookie("test", urldecode ($json_str), false,"/",false);
?>
<script type="text/javascript">
function getCookie(name) {
var value = "; " + document.cookie;
var parts = value.split("; " + name + "=");
if (parts.length == 2)
return parts.pop().split(";").shift();
}
console.log(getCookie('test'));
</script>问题是,cookie将以如下方式存储:
%7B%221%22%3A%220%22%2C%222%22%3A%220%22%2C%223%22%3A%220%22%2C%224%22%3A%220%22%2C%225%22%3A%220%22%2C%226%22%3A%220%22%2C%227%22%3A%220%22%2C%228%22%3A%220%22%2C%229%22%3A%220%22%2C%2210%22%3A%220%22%7DPHP中的字符串是正确的。但是当我将它存储在cookie中时,格式已经改变了,就像上面的例子一样。因此,我无法正确地阅读JavaScript中的cookie。
有人有什么建议吗?
解决方案
<?php
$defaultActions = array(
'1' => '0',
'2' => '0',
'3' => '0',
'4' => '0',
'5' => '0',
'6' => '0',
'7' => '0',
'8' => '0',
'9' => '0',
'10' => '0'
);
$json_str = json_encode($defaultActions);
//delete all cookies
if (isset($_SERVER['HTTP_COOKIE'])) {
$cookies = explode(';', $_SERVER['HTTP_COOKIE']);
foreach($cookies as $cookie) {
$parts = explode('=', $cookie);
$name = trim($parts[0]);
setcookie($name, '', time()-1000);
setcookie($name, '', time()-1000, '/');
}
}
//setrawcookie("test", $json_str, false,"/",false);
setcookie("test", $json_str, false,"/",false);
?>
<script type="text/javascript">
function getCookie(name) {
var value = "; " + document.cookie;
var parts = value.split("; " + name + "=");
if (parts.length == 2)
return parts.pop().split(";").shift();
}
console.log(decodeURIComponent(getCookie('test')));
</script>多亏了@Alex Blex
发布于 2017-09-20 09:35:16
赛特曲奇自动urlencode的值。对参数使用urldecode不会有帮助,因为它对json字符串没有任何作用。
相反,您需要使用拖网饼。它将按原样发送字符串,因此您可能需要格外小心所发送的内容。
更新:
为了保持简单,最好保留cookies编码,并用javascript对其进行解码:
console.log(decodeURIComponent(getCookie('test')));https://stackoverflow.com/questions/46318113
复制相似问题