How do I set and unset a cookie using jQuery, for example create a cookie named test
and set the value to 1
?
Update April 2019
jQuery isn't needed for cookie reading/manipulation, so don't use the original answer below.
Go to https://github.com/js-cookie/js-cookie instead, and use the library there that doesn't depend on jQuery.
Basic examples:
// Set a cookie
Cookies.set('name', 'value');
// Read the cookie
Cookies.get('name') => // => 'value'
See the docs on github for details.
See the plugin:
https://github.com/carhartl/jquery-cookie
You can then do:
$.cookie("test", 1);
To delete:
$.removeCookie("test");
Additionally, to set a timeout of a certain number of days (10 here) on the cookie:
$.cookie("test", 1, { expires : 10 });
If the expires option is omitted, then the cookie becomes a session cookie and is deleted when the browser exits.
To cover all the options:
$.cookie("test", 1, {
expires : 10, // Expires in 10 days
path : '/', // The value of the path attribute of the cookie
// (Default: path of page that created the cookie).
domain : 'jquery.com', // The value of the domain attribute of the cookie
// (Default: domain of page that created the cookie).
secure : true // If set to true the secure attribute of the cookie
// will be set and the cookie transmission will
// require a secure protocol (defaults to false).
});
To read back the value of the cookie:
var cookieValue = $.cookie("test");
You may wish to specify the path parameter if the cookie was created on a different path to the current one:
var cookieValue = $.cookie("test", { path: '/foo' });
UPDATE (April 2015):
As stated in the comments below, the team that worked on the original plugin has removed the jQuery dependency in a new project (https://github.com/js-cookie/js-cookie) which has the same functionality and general syntax as the jQuery version. Apparently the original plugin isn't going anywhere though.
from the changelog: "$.removeCookie('foo') for deleting a cookie, using $.cookie('foo', null) is now deprecated"
@Kazar I spent 6 hours, no breaks. I finally realized the problem this morning. I'm using this with phonegap, on the site it works with no problems, but on the device, when you try to retrieve the cookie which has a JSON, it's already an object, so if you try to JSON.parse it, it will give a JSON parse error. Solved it with an "if typeof x == 'string'" do the JSON.parse, else, just use the object. 6 goddamn hours looking for the error in all the wrong places
when removing the cookie, make sure to also set the path to the same path as you set the cookie originally:
$.removeCookie('nameofcookie', { path: '/' });
It's 2015 and we are still receiving more than 2k unique hits per week in jquery-cookie repository just from this answer. A couple of things we can learn from that: 1. cookies are not going to die soon and 2. People still google for a "jquery plugin to save the world". jQuery is NOT necessary for handling cookies, jquery-cookie is being renamed to js-cookie (github.com/js-cookie/js-cookie) and jquery dependency was made optional in version 1.5.0. There will be a version 2.0.0 with a lot of interesting stuff, it's worth take a look and contribute, thx!
@Kazar We are not planning to physically move it, there is a considerable amount of overall traffic to that URL from several sources and Klaus is the historic owner of the "jquery-cookie" namespace. There's no need to worry for that URL being gone anytime soon. But still, I would encourage everyone to start watching the new repository for updates.