2011-01-16 16 views
7

Oggi ho una soluzione Ajax in cui il server tiene traccia delle selezioni effettuate e aggiorna la pagina. Lo sto rifacendo così sarà tutto fatto con javascript sul client fino a quando l'utente non invierà effettivamente i dati, le prestazioni sono piuttosto brutte sotto carico con la vecchia soluzione. (C#, ASP.NET 4.0)Memorizzare un array multidimensionale in un cookie?

trovato un bel modo di memorizzazione di un array prima serializzare con JSON link text

dire che ho un array come questo: {Id, valore}

Qualsiasi consiglio come posso memorizzare molti degli array sopra in un cookie?

+0

Tieni presente che puoi archiviare solo fino a 4KB per cookie. Inoltre, tieni presente che più i cookie sono grandi, maggiore è il numero di dati che il client deve inviare durante l'esecuzione delle richieste. –

risposta

7

Dire che ho un array come questo: {Id, valore}

Questo non è un array. Questo è un oggetto. È possibile più copie di quelle di un array:

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

Questa è una stringa valida JSON per un array contenente oggetti   — in questo caso, gli oggetti con una singola proprietà, foo, ognuno dei quali ha un proprio valore, ma gli oggetti non devono avere le stesse proprietà e possono avere più proprietà. Per esempio:

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

Questa è una stringa JSON valido per un array con cinque voci:

  • Un oggetto senza proprietà (ad esempio, un oggetto "vuoto").
  • Un array con quattro voci.
  • Una stringa.
  • Un oggetto con quattro proprietà: f0, f1, f2 e all. f0, f1 e f2 hanno tutti valori stringa; all ha un array di stringhe come valore.
  • The answer alla vita, l'universo e tutto.

È possibile trasformare un oggetto o un array in una stringa JSON valida (stringify) e invertire il processo (analisi) lato client utilizzando una qualsiasi delle varie librerie. Crockford (l'inventore di JSON) ne ha diversi su his github page, in particolare json2.js sebbene json2.js si affidi a eval per l'analisi; Dal momento che non è proprio l'ideale, è possibile utilizzare json_parse.js (un parser di discesa ricorsivo che non utilizza eval) o json_parse_state.js (una macchina a stati che non utilizza eval).

+0

Grazie per l'ottima risposta TJ – StefanE

1

cookie memorizzare solo le stringhe semplici.Si può venire con te proprio sistema di qualcosa di simile:

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

Quando si desidera indietro, si esplodere la stringa a delimitatori (in questo caso ';' e '')

2

Conversione di un array in una stringa:

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

si può quindi rendere un biscotto:

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

E poi analizzarlo:

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