2012-04-17 10 views
7

estoy usando este breve fragmento de código:Jquery parada HTML codificación de cookies

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 }); 
} 

Sin embargo, el valor se convierte siempre en codificada en HTML. Por ejemplo:

5%2C1 

cual, como es decodificada with this tool:

5,1 

He intentado usar unescape pero no hubo suerte:

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

más ideas?

+0

Weird. Unescape funciona para mí: http://jsfiddle.net/9LdxL/ –

+0

@Jonny, ese Fiddle funciona, pero cuando intentamos guardarlo en una Cookie el valor siempre está codificado en HTML –

Respuesta

0

Esta respuesta es realmente útil:

Allowed characters in cookies

Pero yo realmente no veo el problema. Cuando desee usarlos en su documento, puede deshacerlos. Si desea almacenarlos en las cookies, se están escapando.

+0

El problema es que si Javascript está desactivado, el sitio vuelve a su versión no JS. La configuración de cookies del lado del servidor no codifica los datos en HTML, por lo que cuando JS decide codificarla, no sabemos si el servidor necesita decodificación o no. –

+0

¿Qué pasa si siempre decodifica en el lado del servidor? Hasta donde yo sé, una cadena decodificada permanece igual cuando la decodifica. –

+1

Puede que no sea seguro hacerlo en todos los casos, por ejemplo, si queremos almacenar '% 20' como un valor –

9

jquery.cookie está codificando la coma de forma predeterminada. Para anular esto simplemente haga lo siguiente:

$.cookie.raw = true;