簡體   English   中英

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

[英]Parsing JSON string in Rails from Cookie generated by JavaScript

我試圖解析一個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缺失。

有任何想法嗎?

我嘗試將其作為直接文本,它與它遇到的第一個逗號做同樣的事情。

UPDATED在下面回答了我自己的問題 - 需要使用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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM