I want to store Javascript array as a Cookie

JavascriptJqueryCookies

Javascript Problem Overview


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?

Javascript Solutions


Solution 1 - Javascript

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 https://stackoverflow.com/questions/4825683/how-do-i-create-and-read-a-value-from-cookie

Solution 2 - Javascript

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.

Solution 3 - Javascript

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 />';
}
?>

Solution 4 - Javascript

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'))

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionOguz BilgicView Question on Stackoverflow
Solution 1 - JavascriptGeorge KaganView Answer on Stackoverflow
Solution 2 - JavascriptDaniel VassalloView Answer on Stackoverflow
Solution 3 - JavascriptDavid WongView Answer on Stackoverflow
Solution 4 - JavascriptPuneet SharmaView Answer on Stackoverflow