这是我的代码:
<?php
$cookie = [
'url' => (isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null),
'landing_page' => "//{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}",
'date' => date('Y-m-d H:i:s')
];
setcookie("mycookie_".rand(1,1000), json_encode($cookie), time() + (86400 * 30), "/");
?>
<script>
var random = Math.floor((Math.random() * 1000) + 1);
setcookie("first_interaction"+random,<?=json_encode($cookie)?>,365)
</script>
问题是"json_encode($cookie)“的值是如何作为Cookie值添加的,如下所示:
在Javascript中添加cookie时的值:
[object Object]
在PHP中添加cookie时的值:
%7B%22url%22%3Anull%2C%22landing_page%22%3A%22%5C%2F%5C%2Fwww.site.com%5C%2FcookieTest.php%3Ftest%3Dtest%22%2C%22date%22%3A%222018-07-05+17%3A33%3A34%22%7D
我想让JS添加与PHP相同的cookie值...有什么想法吗?
发布于 2018-07-06 06:42:46
setcookie("first_interaction"+random,<?=json_encode($cookie)?>,365)
这里的问题是您将原始json放入该方法调用中。当javascript被浏览器解析时,它会把它变成一个真正的对象,这很可能就是你看到[object Object]
的原因。
我建议使用单引号将值括起来,这样javascript就会将其保留为字符串。
setcookie("first_interaction"+random,'<?=json_encode($cookie)?>',365)
https://stackoverflow.com/questions/51200767
复制相似问题