[英]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.