2012-04-17 19 views
7

sto usando questo breve frammento di codice:Jquery fermata HTML codifica biscotto

var d = itemID + "," + quantity; 
var CookieData = $.cookie("storebasket"); 

if(CookieData == null || CookieData == "") { 
    $.cookie("storebasket", d, { path: '/', expires: 60 }); 
} else { 
    $.cookie("storebasket", CookieData + "|" + d, { path: '/', expires: 60 }); 
} 

Tuttavia il valore SEMPRE diventa codificato HTML. Per esempio:

5%2C1 

Quali quando decodificato with this tool è:

5,1 

Ho provato con unescape ma senza fortuna:

$.cookie("storebasket", unescape(d), { path: '/', expires: 60 }); 

Tutte le idee più?

+0

Strano. Unescape funziona per me: http://jsfiddle.net/9LdxL/ –

+0

@Jonny, che Fiddle funziona ma quando proviamo a salvarlo in un cookie il valore è sempre codificato in HTML –

risposta

0

Questa risposta è davvero utile:

Allowed characters in cookies

Ma io davvero non vedo il problema. Quando vuoi usarli nel tuo documento, puoi rimuoverli. Se si desidera archiviarli nei cookie, vengono salvati.

+0

Il problema è che se Javascript è disabilitato il sito ricade nella sua versione non JS. L'impostazione del cookie lato server non codifica in HTML i dati, quindi quando JS decide di codificarlo non sappiamo lato server se ha bisogno di decodifica o meno. –

+0

Cosa succede se decodifichi sempre dal lato server? Per quanto ne so, una stringa decodificata rimane la stessa quando la decodifica. –

+1

Potrebbe non essere sicuro farlo in ogni caso, ad esempio se vogliamo memorizzare '% 20' come valore –

9

jquery.cookie codifica la virgola per impostazione predefinita. Per ignorare ciò basta:

$.cookie.raw = true;