2011-01-16 32 views
7

Hoy tengo una solución Ajax donde el servidor realiza un seguimiento de las selecciones y actualiza la página. Estoy rehaciendo esto, así que todo estará hecho con javascript en el cliente hasta que el usuario realmente envíe los datos, el rendimiento es bastante malo bajo carga con la solución anterior. (C#, ASP.NET 4.0)¿Almacena una matriz multidimensional en una cookie?

encontrado una buena manera de almacenar una matriz por primera serializarlo con JSON link text

decir que tengo una serie como esta: {id, valor}

Algún consejo ¿Cómo puedo almacenar varias de las matrices de arriba en una cookie?

+0

Solo tenga en cuenta que solo puede almacenar hasta 4 KB por cookies. También tenga en cuenta que cuanto más grandes sean sus cookies, más datos tendrá que enviar el cliente cuando realice las solicitudes. –

Respuesta

7

Decir que tengo una serie como esta: {id, valor}

Eso no es una matriz. Ese es un objeto. Puede múltiples copias de los de una matriz:

[ 
    {"foo": "bar"}, 
    {"foo": "baz"}, 
    {"foo": "boom"} 
] 

Esa es una JSON cadena válida para una matriz que contiene objetos   — en este caso, los objetos con una sola propiedad, foo, cada uno de los cuales tiene su propio valor, pero los objetos no tienen que tener las mismas propiedades, y pueden tener propiedades múltiples. Por ejemplo:

[ 
    {}, 
    ["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 
] 

Eso es una cadena JSON válida para una matriz con cinco entradas:

  • Un objeto sin propiedades (por ejemplo, un objeto "en blanco").
  • Una matriz con cuatro entradas.
  • Una cadena.
  • Un objeto con cuatro propiedades: f0, f1, f2 y all. f0, f1 y f2 tienen valores de cadena; all tiene una matriz de cadenas como valor.
  • The answer a la vida, el universo y todo.

Puede convertir un objeto o matriz en una cadena JSON válida (stringify), e invertir el proceso (analizar) desde el lado del cliente utilizando cualquiera de varias bibliotecas. Crockford (el inventor de JSON) tiene varios en his github page, más notablemente json2.js aunque json2.js se basa en eval para analizar; como eso no es realmente ideal, puede usar json_parse.js (un analizador de bajadas recursivo que no usa eval) o json_parse_state.js (una máquina de estados que no usa eval).

+0

Gracias por una muy buena respuesta TJ – StefanE

1

cookies sólo almacenan cadenas simples.Puede llegar a que el propio sistema algo como esto:

$content = [id,value];[text,textvalue]; 
setcookie("Array", $content); 

Cuando se quiere de vuelta, que explotan la cuerda en delimitadores (en este caso '' y '')

2

la conversión de una matriz en una cadena:

> JSON.stringify([1, 2]) 
*returns* '[1, 2]' 

a continuación, puede hacer que sea una cookie:

> $.cookie('cookie', '[1, 2]') 

Y luego analizarlo:

> JSON.parse($.cookie('cookie')) 
*returns* [1, 2] 
Cuestiones relacionadas