62

Is it possible, I have a some sort of list and I want to store it on browser, if it is not possible, what is the efficient way of doing this?

1
  • see this example I created stackoverflow Commented Jul 1, 2020 at 23:39

4 Answers 4

124

JSON encode it, effectively producing a string like "{name:'myname',age:'myage'}" which you put in a cookie, retrieve when needed and decode back into a JavaScript array/object.

Example - store array in a cookie:

var arr = ['foo', 'bar', 'baz'];
var json_str = JSON.stringify(arr);
createCookie('mycookie', json_str);

Later on, to retrieve the cookie's contents as an array:

var json_str = getCookie('mycookie');
var arr = JSON.parse(json_str);

Note: cookie functions are not native, taken from How do I create and read a value from cookie?

Sign up to request clarification or add additional context in comments.

Comments

36

One quick method is to join() your array into a single string, using an appropriate delimiter:

var a = [1, 2, 3, 4];
a.join('|');  // Returns: "1|2|3|4"

Then simply use the string split() method to get the array back from the cookie string.

1 Comment

A minor correction, it needs to be assigned as new variable like this, var new_a = a.join('|') which will return "1|2|3|4".
3

For each value id in an array, please try below method to save a value in a cookie array:

<script type="text/javascript">

/**
 * set cookie
 */
function set_cookie(cookiename, cookievalue, hours) {
    var date = new Date();
    date.setTime(date.getTime() + Number(hours) * 3600 * 1000);
    document.cookie = cookiename + "=" + cookievalue + "; path=/;expires = " + date.toGMTString();

}

set_cookie('item['+id+']', id, 24*365*10); // 10 years

</script>

And you can retrieve this array in php:

<?php
foreach($_COOKIE['item'] as $e){
echo $e,'<br />';
}
?>

Comments

0

Assume cart is array we can set it with

document.cookie = 'cart='+ JSON.stringify(cart) 

Then, you have to create a function to read cookie

function getCookie(cookieName) {
    var name = cookieName + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i].trim();
        if ((c.indexOf(name)) == 0) {
            return c.substr(name.length);
        }
    }
}

then you can get cookie with

cart = JSON.parse(getCookie('cart'))

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.