2012-04-17 31 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當是:

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

任何更多的想法:

5,1 

我使用unescape但沒有運氣試過嗎?

+0

奇怪。 Unescape適合我:http://jsfiddle.net/9LdxL/ – 2012-04-17 17:25:06

+0

@Jonny,小提琴的作品,但當我們嘗試並將其保存到Cookie中時,該值始終是HTML編碼的 – 2012-04-17 17:30:36

回答

0

這個答案是非常有用的:

Allowed characters in cookies

但我真的不明白這個問題。當你想在你的文檔中使用它們時,你可以避開它們。如果你想將它們存儲在cookies中,它們將被轉義。

+0

問題是,如果Javascript被禁用,該站點回落到它的非JS版本。服務器端cookie設置不對HTML數據進行編碼,所以當JS決定編碼時,我們不知道服務器端是否需要解碼。 – 2012-04-17 17:44:43

+0

如果您始終在服務器端對其進行解碼,該怎麼辦?據我所知,解碼後的字符串保持不變。 – 2012-04-17 17:51:50

+1

在任何情況下都可能不安全,例如,如果我們想將'%20'作爲值存儲 – 2012-04-17 17:54:58

9

jquery.cookie默認編碼逗號。要覆蓋這只是做:

$.cookie.raw = true;