从JavaScript生成的Cookie中解析Rails中的JSON字符串

我试图解析一个 JSON字符串,该字符串存储在我的Rails代码正在调用的cookie值中.

Rails能够读取字符串,直到逗号(‘,’)分隔字符串中的两个不同的键:值对.

JavaScript的:

var value1 = "v1";
var value2 = "v2";
var obj = { key1: value1,key2: value2 };
document.cookie = "cookiename="+JSON.stringify(obj);

曲奇饼:

Name: cookiename
Content: {"key1":v1,"key2":v2}

扶手:

@cookievalue = cookies[:cookiename]

在erb<%= @cookievalue%>中调用@cookievalue时的Rails将其评估为:

{"key1":v1

超过逗号(‘,’)的任何东西,分隔key1:v1,key2:v2缺失.

有任何想法吗?

我尝试将其作为直接文本,它与它遇到的第一个逗号做同样的事情.

更新
回答了我自己的问题 – 需要使用JS中的encode()来转义分隔值的逗号.

解决方法

逗号不是一个有效的字符(显然我看过这个),因此它删除了所有内容.

更新修复:

在JavaScript中添加一个encodeURIComponent():

document.cookie = "cookiename="+encodeURIComponent(JSON.stringify(obj));

这会正确地转义字符并将JSON格式的字符串正确传递给我的服务器.还使用encodeURIComponent()而不是encode(),因为亚洲或亚洲字符不能正确编码encode().

服务器端更改(可选):

@cookievalue = JSON.parse(cookies[:cookiename])

这允许我从cookie [:cookiename]检索后更轻松地解析JSON字符串

一个修复:

在JavaScript中添加一个encode():

document.cookie = "cookiename="+encode(JSON.stringify(obj));

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...