2012-04-17 40 views
7

Tôi đang sử dụng đoạn ngắn mã này:Jquery dừng HTML mã hóa cookie sẽ

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

Tuy nhiên giá trị luôn luôn bị HTML mã hóa. Ví dụ:

5%2C1 

nào khi giải mã with this tool là:

5,1 

Tôi đã cố gắng sử dụng unescape nhưng không có may mắn:

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

Bất kỳ ý tưởng nhiều hơn?

+0

Lạ. Unescape làm việc cho tôi: http://jsfiddle.net/9LdxL/ –

+0

@ Jonny, Fiddle đó hoạt động nhưng khi chúng ta thử và lưu nó vào một Cookie giá trị luôn được mã hóa HTML –

Trả lời

0

Câu trả lời này thực sự hữu ích:

Allowed characters in cookies

Nhưng tôi thực sự không thấy vấn đề. Khi bạn muốn sử dụng chúng trong tài liệu của mình, bạn có thể bỏ qua chúng. Nếu bạn muốn lưu trữ chúng trong các tập tin cookie, chúng đang được thoát.

+0

Vấn đề là nếu Javascript bị tắt trang web rơi trở lại nó không phải là phiên bản JS. Cài đặt cookie phía máy chủ không mã hóa HTML dữ liệu, vì vậy khi JS quyết định mã hóa nó, chúng tôi không biết phía máy chủ cho dù nó có cần giải mã hay không. –

+0

Nếu bạn luôn giải mã nó ở phía máy chủ thì sao? Theo như tôi biết, một chuỗi được giải mã vẫn giữ nguyên khi bạn giải mã nó. –

+1

Nó có thể không an toàn để làm điều đó trong mọi trường hợp, ví dụ nếu chúng ta muốn lưu trữ '% 20' như một giá trị –

9

jquery.cookie sẽ mã hóa dấu phẩy theo mặc định. Để ghi đè điều này chỉ cần thực hiện:

$.cookie.raw = true; 
Các vấn đề liên quan