2012-04-17 2 views
7

Я использую этот короткий фрагмент кода:Jquery остановка HTML кодирование печенье

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

Однако значение ВСЕГДА становится закодированы HTML. Например:

5%2C1 

Который при декодировании with this tool является:

5,1 

Я попытался с помощью unescape, но не повезло:

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

Все больше идей?

+0

Weird. Unescape работает для меня: http://jsfiddle.net/9LdxL/ –

+0

@ Jonny, этот скрипт работает, но когда мы пытаемся сохранить его в Cookie, значение всегда кодируется HTML –

ответ

0

Этот ответ очень полезен:

Allowed characters in cookies

Но я действительно не вижу проблемы. Если вы хотите использовать их в своем документе, вы можете их удалить. Если вы хотите сохранить их в файлах cookie, они сбегают.

+0

Проблема в том, что если Javascript отключен, сайт возвращается к не-JS-версии. Параметр cookie на стороне сервера не кодирует данные HTML, поэтому, когда JS решает его закодировать, мы не знаем, на стороне сервера, нужно ли декодировать или нет. –

+0

Что делать, если вы всегда декодируете его на стороне сервера? Насколько я знаю, декодированная строка остается неизменной при ее декодировании. –

+1

В любом случае это может быть безопасно, например, если мы хотим сохранить '% 20' в качестве значения –

9

jquery.cookie кодирует запятую по умолчанию. Чтобы отменить это, просто выполните:

$.cookie.raw = true;