2012-04-17 29 views
7

मैं कोड के इस छोटे से टुकड़ा उपयोग कर रहा हूँ:Jquery रोक एचटीएमएल एन्कोडिंग कुकी

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

हालांकि मूल्य हमेशा एचटीएमएल इनकोडिंग हो जाता है। उदाहरण के लिए:

5%2C1 

कौन सा जब with this tool डीकोड है:

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

किसी भी और अधिक विचार:

5,1 

मैं unescape लेकिन कोई किस्मत का उपयोग कर की कोशिश की है?

+0

अजीब। यूनिस्केप मेरे लिए काम करता है: http://jsfiddle.net/9LdxL/ –

+0

@ जॉनी, कि फिल्ड काम करता है लेकिन जब हम इसे कुकी में सहेजते और सहेजते हैं तो मान हमेशा HTML एन्कोडेड –

उत्तर

0

इस उत्तर वास्तव में उपयोगी है:

Allowed characters in cookies

लेकिन मैं वास्तव में समस्या नहीं दिख रहा। जब आप उन्हें अपने दस्तावेज़ में उपयोग करना चाहते हैं, तो आप उन्हें अनदेखा कर सकते हैं। यदि आप उन्हें कुकीज़ में स्टोर करना चाहते हैं, तो वे भाग रहे हैं।

+0

समस्या यह है कि यदि जावास्क्रिप्ट साइट को अक्षम कर दिया गया है इसके गैर जेएस संस्करण पर वापस आ जाता है। सर्वर साइड कुकी सेटिंग HTML को डेटा एन्कोड नहीं करती है, इसलिए जब JS इसे एन्कोड करने का निर्णय लेता है तो हम सर्वर पक्ष को नहीं जानते कि उसे डिकोडिंग की आवश्यकता है या नहीं। –

+0

क्या होगा यदि आप हमेशा इसे सर्वर की तरफ डीकोड करते हैं? जहां तक ​​मुझे पता है, एक डीकोडेड स्ट्रिंग वही रहता है जब आप इसे डीकोड करते हैं। –

+1

यह हर मामले में ऐसा करने के लिए सुरक्षित नहीं हो सकता है, उदाहरण के लिए यदि हम '020' को मूल्य –

9

jquery.cookie डिफ़ॉल्ट रूप से अल्पविराम को एन्कोड कर रहा है। इसे ओवरराइड करने के लिए बस करें:

$.cookie.raw = true;