Ray*_*Kao 7 javascript string cookies json ruby-on-rails
我试图解析一个JSON字符串,该字符串存储在我的Rails代码正在调用的cookie值中.
Rails能够读取字符串,直到逗号(',')分隔字符串中的两个不同的键:值对.
JavaScript的:
var value1 = "v1";
var value2 = "v2";
var obj = { key1: value1, key2: value2 };
document.cookie = "cookiename="+JSON.stringify(obj);
Run Code Online (Sandbox Code Playgroud)
曲奇饼:
Name: cookiename
Content: {"key1":v1,"key2":v2}
Run Code Online (Sandbox Code Playgroud)
扶手:
@cookievalue = cookies[:cookiename]
Run Code Online (Sandbox Code Playgroud)
在erb <%= @cookievalue%>中调用@cookievalue时的Rails将其评估为:
{"key1":v1
Run Code Online (Sandbox Code Playgroud)
超出逗号(',')的任何东西,分隔key1:v1,key2:v2缺失.
有任何想法吗?
我尝试将其作为直接文本,它与它遇到的第一个逗号做同样的事情.
UPDATED 在下面回答了我自己的问题 - 需要使用JS中的encode()来转义分隔值的逗号.
逗号不是一个有效的字符(显然我看过这个),因此它删除了它之后的所有内容.
更新修复:
在JavaScript中添加了一个encodeURIComponent():
document.cookie = "cookiename="+encodeURIComponent(JSON.stringify(obj));
Run Code Online (Sandbox Code Playgroud)
这会正确转义字符并将JSON格式的字符串正确传递给我的服务器.还使用encodeURIComponent()而不是encode(),因为亚洲或亚洲字符不能正确编码encode().
服务器端更改(可选):
@cookievalue = JSON.parse(cookies[:cookiename])
Run Code Online (Sandbox Code Playgroud)
这允许我从cookie [:cookiename]检索后更轻松地解析JSON字符串
上一个修复:
在JavaScript中添加了一个encode():
document.cookie = "cookiename="+encode(JSON.stringify(obj));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2140 次 |
| 最近记录: |