2012-01-27 13 views
19

मैं जावास्क्रिप्ट वस्तुओं की एक सूची है:

$.cookie("people", people); 

मैं तो इस कुकी को पुनः प्राप्त और उसके बाद करने का प्रयास करें:

var people = [ 
    { 'name' : 'Abel', 'age' : 1 }, 
    { 'name' : 'Bella', 'age' : 2 }, 
    { 'name' : 'Chad', 'age' : 3 }, 
] 

मैं उन्हें jQuery $ .cookie() के साथ एक ब्राउज़र कुकी में संग्रहीत करने के लिए करने की कोशिश की इसमें एक और ऑब्जेक्ट दबाएं:

var people = $.cookie("people"); 
people.push(
    { 'name' : 'Daniel', 'age' : 4 } 
); 

हालांकि, यह काम नहीं करता है; मैंने फ़ायरबग में इस कोड का विश्लेषण किया, और कंसोल ने नोट किया कि people एक स्ट्रिंग ("[object Object],[object Object],[object Object]") था और पुश फ़ंक्शन मौजूद नहीं था।

क्या चल रहा है? वस्तुओं की सूची को स्टोर और पुनर्प्राप्त करने का उचित तरीका क्या है?

+13

आपको 'लोगों' के var नाम को 'बच्चों' में बदलना चाहिए :) – ajax333221

+0

$। कुकी ("लोग", $ .param (लोग)); यह मेरे लिए पूरी तरह से काम किया – Nejthe

उत्तर

32

कुकीज़ केवल तारों को स्टोर कर सकती है। इसलिए, आपको ऑब्जेक्ट्स की अपनी सरणी को JSON स्ट्रिंग में कनवर्ट करने की आवश्यकता है। यदि आपके पास JSON लाइब्रेरी है, तो आप बस JSON.stringify(people) का उपयोग कर सकते हैं और कुकी में स्टोर कर सकते हैं, फिर $.parseJSON(people) का उपयोग इसे अन-स्ट्रिंग करने के लिए करें।

अंत में, अपने कोड देखने की तरह होगा:

var people = [ 
    { 'name' : 'Abel', 'age' : 1 }, 
    { 'name' : 'Bella', 'age' : 2 }, 
    { 'name' : 'Chad', 'age' : 3 }, 
]; 
$.cookie("people", JSON.stringify(people)); 
// later on... 
var people = $.parseJSON($.cookie("people")); 
people.push(
    { 'name' : 'Daniel', 'age' : 4 } 
); 
$.cookie("people", JSON.stringify(people)); 
+0

धन्यवाद, JSON लाइब्रेरी क्या है? – dangerChihuahua007

+1

https://github.com/douglascrockford/JSON-js/blob/master/json2.js –

+0

यह बहुत उपयोगी पाया लेकिन यह var people = $ .parseJSON ($। कुकी ("लोग");) यह var होना चाहिए लोग = $ .parseJSON ($। कुकी ("लोग")); "," जगह से बाहर है। – ARWVISIONS

5

मैं आज की कोशिश की और यह काम करने के लिए नहीं मिल सका। बाद में मुझे पता चला कि ऐसा इसलिए था क्योंकि मेरे पास 3 बहुत बड़ी वस्तुएं थीं जिन्हें मैंने कुकी में सहेजने की कोशिश की थी।

जिस तरह से मैंने काम किया, ब्राउजर स्थानीय स्टोरेज में जानकारी संग्रहीत करके।

उदाहरण:

localStorage.setItem("test2", JSON.stringify(obj)) 

localStorage.getItem("test2") 

स्थानीय भंडारण के बारे में अधिक जानकारी: cookies vs local storage

4 अपने समय के घंटे, यह करने के लिए वेंट एक ही गलती नहीं है।