今天我有一个Ajax解决方案,服务器跟踪选择正在进行并更新页面。我正在重做这个,所以它将在客户端上使用javascript完成,直到用户实际提交数据,性能在旧解决方案的负载下非常糟糕。 (C#,ASP.NET 4.0)
首先使用json link text
对其进行序列化,找到一种存储数组的好方法说我有这样的数组:{Id,Value}
有任何建议我如何将上面的几个数组存储到cookie中吗?
答案 0 :(得分:7)
说我有这样的数组:{Id,Value}
那不是阵列。那是一个对象。您可以在数组中复制多个副本:
[
{"foo": "bar"},
{"foo": "baz"},
{"foo": "boom"}
]
这是包含对象的数组的有效JSON字符串 - 在这种情况下,具有单个属性foo
的对象,每个属性都有自己的值,但对象不必具有具有相同的属性,并且它们可以具有多个属性。例如:
[
{},
["zero", "one", "two", "three"],
"I'm just a string",
{
"f0": "foo zero",
"f1": "foo one",
"f2": "foo two",
"all": ["foo zero", "foo one", "foo two"]
},
42
]
对于包含五个条目的数组,这是一个有效的JSON字符串:
f0
,f1
,f2
和all
。 f0
,f1
和f2
都有字符串值; all
有一个字符串数组作为值。您可以将对象或数组转换为有效的JSON字符串(stringify),并使用多个库中的任何一个来反转进程(解析)客户端。 Crockford(JSON的发明者)有几个his github page,最着名的是json2.js,尽管json2.js依赖于eval
进行解析;因为那不是很理想,你可以使用json_parse.js
(一个不使用eval
的递归下降解析器)或json_parse_state.js
(一个不使用eval
的状态机)代替。
答案 1 :(得分:1)
使用JSON.stringify
从数组对象生成一个字符串。
http://msdn.microsoft.com/en-us/library/cc836459(v=vs.85).aspx
答案 2 :(得分:1)
Cookies只存储简单的字符串。你可以想出这样的系统:
$content = [id,value];[text,textvalue];
setcookie("Array", $content);
当你想要它时,你会在分隔符处爆炸字符串(在这种情况下';'和',')
答案 3 :(得分:1)
将数组转换为字符串:
> JSON.stringify([1, 2])
*returns* '[1, 2]'
然后我们可以把它变成一个cookie:
> $.cookie('cookie', '[1, 2]')
然后解析它:
> JSON.parse($.cookie('cookie'))
*returns* [1, 2]