how to store an array in jquery cookie? how to store an array in jquery cookie? arrays arrays

how to store an array in jquery cookie?


Still not exactly sure what you need but i hope this will help.This is a sample that will allow you to access the items on any page, its just a sample!It uses the cookieName to identify it across the pages.

//This is not production quality, its just demo code.var cookieList = function(cookieName) {//When the cookie is saved the items will be a comma seperated string//So we will split the cookie by comma to get the original arrayvar cookie = $.cookie(cookieName);//Load the items or a new array if null.var items = cookie ? cookie.split(/,/) : new Array();//Return a object that we can use to access the array.//while hiding direct access to the declared items array//this is called closures see http://www.jibbering.com/faq/faq_notes/closures.htmlreturn {    "add": function(val) {        //Add to the items.        items.push(val);        //Save the items to a cookie.        //EDIT: Modified from linked answer by Nick see         //      http://stackoverflow.com/questions/3387251/how-to-store-array-in-jquery-cookie        $.cookie(cookieName, items.join(','));    },    "remove": function (val) {         //EDIT: Thx to Assef and luke for remove.        indx = items.indexOf(val);         if(indx!=-1) items.splice(indx, 1);         $.cookie(cookieName, items.join(','));        },    "clear": function() {        items = null;        //clear the cookie.        $.cookie(cookieName, null);    },    "items": function() {        //Get all the items.        return items;    }  }}  

So on any page you can get the items like this.

var list = new cookieList("MyItems"); // all items in the array.

Adding items to the cookieList

list.add("foo"); //Note this value cannot have a comma "," as this will spilt into//two seperate values when you declare the cookieList.

Getting all the items as an array

alert(list.items());

Clearing the items

list.clear();

You can add additional things like push and pop quite easily.Again hope this helps.

EDITSee bravos answer if you having issues with IE


Download the jQuery cookie plugin here: http://plugins.jquery.com/project/Cookie

Setting a cookie with jQuery is as simple as this, where we are creating a cookie called "example" with a value of ["foo1", "foo2"]

$.cookie("example", ["foo1", "foo2"]);

Getting the cookie's value is also very easy with jQuery. The following would show the value of the "example" cookie in a dialog window

alert( $.cookie("example") );


Check out my implementation (as a jquery plugin):

(function ($) {    $.fn.extend({        cookieList: function (cookieName) {            var cookie = $.cookie(cookieName);            var items = cookie ? eval("([" + cookie + "])") : [];            return {                add: function (val) {                    var index = items.indexOf(val);                    // Note: Add only unique values.                    if (index == -1) {                        items.push(val);                        $.cookie(cookieName, items.join(','), { expires: 365, path: '/' });                    }                },                remove: function (val) {                    var index = items.indexOf(val);                    if (index != -1) {                        items.splice(index, 1);                        $.cookie(cookieName, items.join(','), { expires: 365, path: '/' });                     }                },                indexOf: function (val) {                    return items.indexOf(val);                },                clear: function () {                    items = null;                    $.cookie(cookieName, null, { expires: 365, path: '/' });                },                items: function () {                    return items;                },                length: function () {                    return items.length;                },                join: function (separator) {                    return items.join(separator);                }            };        }    });})(jQuery);

Usage:

  var cookieList = $.fn.cookieList("cookieName");  cookieList.add(1);  cookieList.add(2);  cookieList.remove(1);  var index = cookieList.indexOf(2);  var length = cookieList.length();