2011-06-20 23 views
8

मैं लोकप्रिय jquery कुकी प्लगइन का उपयोग कर रहा हूं https://github.com/carhartl/jquery-cookie आश्चर्य करें कि एकाधिक मानों के साथ कुकी को कैसे सेट और पढ़ा जाए? या शायद उस कुकी के लिए मूल्य जोड़ना/निकालना संभव है?Jquery कुकी प्लगइन - एकाधिक मूल्य?

$। कुकी ("MyTestCookie", ईमेल, {कालबाह्य: 10}); नेट Storing multiple values in cookies

+1

मुझे लगता है कि आप ध्यान में रखते हुए किया जाना चाहिए उस –

+1

के लिए अलग कुकीज़ इसलिए यदि मेरे पास कुकी में स्टोर करने के लिए +10 मान हैं, तो मुझे ऐसा करने के लिए +10 कुकीज़ सेट करनी चाहिए? क्या यह एक कुकी में सभी मूल्यों को रखने के लिए समझ में नहीं आता? –

+0

यदि आप अपनी कुकी में एक जेसन-सीरियलाइज्ड स्ट्रिंग स्टोर करते हैं या अलग कुकीज़ का उपयोग करते हैं तो आप तक। – ThiefMaster

उत्तर

17

यदि आप एक कुकी सेट करना चाहते हैं जिसमें एकाधिक मान या "उपकुंजी" हैं और उन्हें .NET से पठनीय किया गया है, तो आपको उपकुंजी को नाम-मूल्य जोड़े के रूप में एक क्वेरीस्ट्रिंग की तरह स्वरूपित करने की आवश्यकता है। आप जावास्क्रिप्ट ऑब्जेक्ट को क्वेरीस्ट्रिंग में कनवर्ट करने के लिए jQuery.param() विधि का उपयोग कर सकते हैं।

var email = Request.Cookies["MyTestCookie"]["email"]; 
var username = Request.Cookies["MyTestCookie"]["username"]; 

संपादित करें:

var obj = { email: '[email protected]', username: 'jdoe' }; 
$.cookie("MyTestCookie", $.param(obj), { expires: 10 }); 

फिर सर्वर पर, आप मूल्यों के रूप में उपयोग कर सकते हैं मैं/पढ़ने को दिखाने के लिए बहु-मूल्य कुकीज़ दोनों लेखन सर्वर और ग्राहक पर एक परीक्षण पृष्ठ बनाया। http://www.systemex.net/Cookies/

नोट:

  • आप से बचने और उपकुँजियाँ न छोड़ने की देखभाल की जरूरत है। इस तरह किसी भी एम्बेडेड = और & सही ढंग से संभाले जाते हैं
  • जब jquery कुकीज़ को पढ़ और लिखते हैं, तो विकल्प {raw: true} का उपयोग करें ताकि यह बचने से दोगुना न हो। {: मूल्य, NAME2: नाम मान 2}
  • मैं एक $ .deparam समारोह है कि एक जावास्क्रिप्ट वस्तु में एक नाम = मूल्य & NAME2 2 = मान स्ट्रिंग में परिवर्तित कर देंगे लिखा
  • एक आखिरी बात, jQuery कुकी प्लगइन एक अधिलेखित नहीं करता है एक ही नाम के साथ कुकी, यह बस वर्तमान कुकी संग्रह में संलग्न है।इस बिंदु पर, उपकुंजियों का समर्थन करने और मौजूदा कुकीज़ को संशोधित करने के लिए प्लगइन को फिर से लिखना बेहतर होगा।

वैसे भी उम्मीद है कि इससे मदद मिलती है।

यहाँ Default.aspx

<h1>Get Cookie From Server:</h1> 
<ul> 
<li>Email: <%= GetCookie("MyTestCookie", "email")%></li> 
<li>Username: <%= GetCookie("MyTestCookie", "username")%></li> 
</ul> 
<h1>Get Cookie From Client:</h1> 
<ul> 
<li>Email: <span class="cookie" data-name="MyTestCookie" data-key="email" /></li> 
<li>Username: <span class="cookie" data-name="MyTestCookie" data-key="username" /></li> 
<li>Raw: <span id="raw" /></li> 
</ul> 
<h1>Set Cookie From Client:</h1> 
<ul> 
<li>Email: <input type="text" name="email" value="" /></li> 
<li>Username: <input type="text" name="username" value="" /></li> 
</ul> 
<input type="submit" value="Submit" /> 

<script> 

    $(function() { 
     $(".cookie").each(function (index) { 
      var name = $(this).data('name'); 
      var key = $(this).data('key'); 
      var cookie = $.deparam($.cookie(name, { raw: true })); 

      $(this).html(cookie[key]); 
     }); 
     $('#raw').text(escape($.cookie("MyTestCookie"), { raw: true })); 


     $("form").submit(function() { 
      var o = {}; 
      o.email = $('input[name=email]').val(); 
      o.username = $('input[name=username]').val(); 
      var value = $.param(o); 
      var cookie = $.cookie('MyTestCookie', value, { raw: true }); 
      return true; 
     }); 
    }); 

    jQuery.deparam = function (params) { 
     var o = {}; 
     if (!params) return o; 
     var a = params.split('&'); 
     for (var i = 0; i < a.length; i++) { 
      var pair = a[i].split('='); 
      o[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]); 
     } 
     return o; 
    } 

</script> 

Default.aspx.cs

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     var cookie = new HttpCookie("MyTestCookie"); 
     cookie["email"] = HttpUtility.UrlEncode("[email protected]"); 
     cookie["username"] = HttpUtility.UrlEncode("jdoe&123"); 
     Response.Cookies.Add(cookie); 
    } 
} 

public string GetCookie(string name, string key) 
{ 
    var cookie = Request.Cookies[name]; 
    return cookie != null ? HttpUtility.UrlDecode(cookie[key]) : ""; 
} 
+0

में serialize और deserialize करने के लिए बस अतिरिक्त कोड धन्यवाद, महान उदाहरण। –

+0

कोई विचार है कि जब मैं कुकी पढ़ने की कोशिश करता हूं तो मुझे मूल्य के रूप में शून्य क्यों मिलता है? यह मेरा कुकी मान है: ईमेल% 3 डीआरआरआर% 2540asc.om% 26password% 3Da8f5f167f44f4964e6c998dee827110c –

+0

मैंने दोनों तरीकों की कोशिश की: स्ट्रिंग ईमेल = अनुरोध। कुकीज ["सॉलिडडोमेन"] ["ईमेल"]; स्ट्रिंग पासवर्ड = अनुरोध। कुकीज ["सॉलिडडोमेन"] ["पासवर्ड"]; स्ट्रिंग ईमेल 1 = Request.Cookies.Get ("SolidDomain")। मान। गेट ("ईमेल"); स्ट्रिंग पासवर्ड 2 = Request.Cookies.Get ("SolidDomain")। मान। गेट ("पासवर्ड"); –

4

भले ही यह आप अभी भी सलाह दी अपने आप को एक कुकी के लिए एकाधिक मान जोड़ने और प्रसंस्करण कर सकते हैं नहीं कर रहा है में सिर्फ एक उदाहरण:

मैं एक ही कुकी

अद्यतन करने के लिए उपयोगकर्ता नाम जोड़ना चाहते हैं।

(यह कुकीज़ की राशि कम हो जाएगा ब्राउज़र में रखा लेकिन जब से आधुनिक ब्राउज़रों कुकीज़ के प्रक्रिया बहुत बड़ा भार के लिए तैयार कर रहे हैं यह लोड हो रहा है की गति के लिए कुछ भी नहीं होता)

आप लूप का उपयोग करके अपना मान जोड़ सकते हैं और उन्हें '%' जैसे विशेष वर्ण का उपयोग करके अलग कर सकते हैं और आप अपनी स्ट्रिंग को किसी भी एन्क्रिप्शन विधि पर संसाधित कर सकते हैं और सभी को एक ही कुकी के रूप में सहेज सकते हैं।

var setofcookies = username + "%" + password + "%" + email; 
$.cookie("MyTestCookie", setofcookies, { expires: 10 }); 

बाद में आप विभाजित उचित सरणी मूल्य में कोड प्राप्त करने के फ़ंक्शन का उपयोग कर सकते हैं:

var cookie = $.cookie('MyTestCookie') 
var mycookies = cookie.split("%"); 
document.write(mycookies[0]); 

यह सबसे उपयुक्त तरीका आप कुकीज़, अन्य तरीकों पर कार्रवाई करने के लिए उपयोग कर सकते है पृष्ठ को थोड़ा धीमा कर देगा।

4

है इस एक का प्रयास करें: https://github.com/tantau-horia/jquery-SuperCookie

त्वरित उपयोग:

बना सकते हैं - बनाने कुकी

जांच - जाँच अस्तित्व

की पुष्टि - कुकी मूल्य की पुष्टि करता है, तो JSON

check_index - यह सत्यापित करें कि सूचकांक JSON में मौजूद है

read_values ​​- पढ़ कुकी - स्ट्रिंग

read_JSON के रूप में कुकी मान पढ़ JSON ऑब्जेक्ट

read_value के रूप में मान - जेएसओएन ऑब्जेक्ट

में संग्रहीत इंडेक्स का मूल्य पढ़ें

replace_value - एक निर्दिष्ट सूचकांक से की जगह मूल्य JSON ऑब्जेक्ट में संग्रहीत

remove_value - मूल्य और सूचकांक JSON ऑब्जेक्ट

में संग्रहीत को दूर बस का उपयोग करें:

$.super_cookie().create("name_of_the_cookie",name_field_1:"value1",name_field_2:"value2"}); 
$.super_cookie().read_value("name_of_the_cookie","name_field_1"); 
संबंधित मुद्दे