好的,所以我对最近的一个项目有一个奇怪的要求。为了绕过我们的 CMS 和缓存的限制,我需要在进行几次 AJAX 调用后在 cookie 中存储和更新 JSON 对象。稍后,如果用户完成了一个过程,则存储在此 cookie 中的信息将用于识别之前做出的选择。完成可以跨越几分钟到几周,即。几乎没有时间限制的页面转换。
当我从 $_COOKIE 全局中提取编码的 JSON 字符串时,我开始收到 JSON 语法错误(实际上在此之前出现了错误,但那是我开始弄清楚发生了什么的时候)。我在 Javascript 中使用内置的 JSON.stringify 来设置 cookie 值,在 PHP 中使用 json_decode。
显然,PHP 会在 $_COOKIE 出来的字符串值中转义引号,这会导致 JSON 语法错误,以及之后的级联效应。我在 PHP JSON 函数或 $_COOKIE 文档中没有看到任何提及。我最终在“\”上做了一个 preg_replace 并删除了它们,它现在“工作”了。
这似乎是一个棘手的工作。有/有什么我想念的吗?将来有没有更好的方法来做到这一点?
回显值和 json_last_error() 时:
$cookie = $_COOKIE['cookie_name']; => {\"后缀\":\"一般\"...}
$cookie = json_decode($cookie, true); => 语法错误:NULL
$cookie = preg_replace('/\\/', "", $cookie); => {"suffix":"general"...}
$cookie = json_decode($cookie, true); => 没有错误:数组