javascript - Javascript 将 cookie 值添加为对象,与添加它的 PHP 不同
问题描述
这是我的代码:
<?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 值……有什么想法吗?
解决方案
setcookie("first_interaction"+random,<?=json_encode($cookie)?>,365)
这里的问题是您将原始 json 放入该方法调用中。当浏览器解析 javascript 时,它将把它变成一个真实的对象,这很可能是您看到[object Object]
.
我建议在值周围加上单引号,以便 javascript 将其保留为字符串。
setcookie("first_interaction"+random,'<?=json_encode($cookie)?>',365)
推荐阅读
- java - Dynamics 365 OData 过滤来自 ComplexType 的数据
- three.js - 两个物体不投射阴影,而另一个物体投射阴影
- r - 如何在数据框中添加与行数一样多的行
- excel - 从电源查询更新表会更改公式参考
- python - 连接多行字符串,同时保留每个字符串的样式
- r - 在 R 中:如何每天根据某一列中的最大值聚合整行?
- r - 在 R 中查明无限递归警告
- django - 如何修复 django-oscar shipping UnboundLocalError?
- angular - 如何在 Angular 2 中将字符串作为 HTTP 有效负载传递?
- c# - linq 中带有两个参数的 WHERE IN 子句