gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 04:41:07 27 4
gpt4 key购买 nike

我正在尝试解析存储在我的 Rails 代码正在调用的 cookie 值中的 JSON 字符串。

Rails 能够读取字符串,直到分隔字符串中两个不同键值对的逗号 (',') 为止。

JavaScript:

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

cookies :

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

rails :

@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));

关于javascript - 从 JavaScript 生成的 Cookie 中解析 Rails 中的 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8217448/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com