2011-11-21 35 views
7

我想解析存储在我的Rails代码调用的cookie值内的JSON字符串。从JavaScript生成的Cookie解析JSON字符串

Rails能够读取字符串,直到逗号(',')将字符串中两个不同的key:value对分隔开来。

JavaScript的:

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

的Cookie:

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

滑轨:

@cookievalue = cookies[:cookiename] 

滑轨在ERB调用@cookievalue当<%= @cookievalue%>计算它为:

{"key1":v1 

任何通过逗号(',')的分隔符key1:v1,key2:v2缺失。

任何想法?

我以直接文本的方式尝试了这种方式,并且它遇到了第一个逗号时也做了同样的事情。

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

回答

7

逗号不是一个有效的字符(我明显看过这个),因此它后面的所有内容都被删除了。

修订FIX

加入encodeURIComponent方法()的JavaScript:

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

这逸出正确的字符并正确传递JSON格式的字符串到我的服务器。由于亚洲或亚洲字符未使用encode()正确编码,因此也使用encodeURIComponent()而不是encode()。

服务器端更改(可选):

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

这让我解析容易一点,一旦从饼干检索的JSON字符串[:cookiename]

先前修订:

加入编码()到JavaScript:

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