16 November, 2005

Cookies in JavaScript

6 Comments

Written by Jason Davies Topics: JavaScript

This tutorial should get you started with cookies in JavaScript. Some utility JavaScript functions are included for you to use freely in your own code.

JavaScript cookies are easily manipulated using the document.cookie property.

Setting Cookies

To set a cookie all we need to do is assign a value to the document.cookie property.

document.cookie = "name=value";

Retrieving Cookies

Reading cookies is equally as easy. Simple read the value of document.cookie.

alert(document.cookie);

JavaScript Cookie Functions

This all looks very simple, but what about getting cookies with a specific name, or setting expiry dates? To do this we need to use a bunch of utility cookie functions.

/**
 * Sets a Cookie with the given name and value.
 *
 * name       Name of the cookie
 * value      Value of the cookie
 * [expires]  Expiration date of the cookie (default: end of current session)
 * [path]     Path where the cookie is valid (default: path of calling document)
 * [domain]   Domain where the cookie is valid
 *              (default: domain of calling document)
 * [secure]   Boolean value indicating if the cookie transmission requires a
 *              secure transmission
 */
function setCookie(name, value, expires, path, domain, secure) {
    document.cookie= name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires.toGMTString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

/**
 * Gets the value of the specified cookie.
 *
 * name  Name of the desired cookie.
 *
 * Returns a string containing value of specified cookie,
 *   or null if cookie does not exist.
 */
function getCookie(name) {
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    } else {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1) {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}

/**
 * Deletes the specified cookie.
 *
 * name      name of the cookie
 * [path]    path of the cookie (must be same as path used to create cookie)
 * [domain]  domain of the cookie (must be same as domain used to create cookie)
 */
function deleteCookie(name, path, domain) {
    if (getCookie(name)) {
        document.cookie = name + "=" +
            ((path) ? "; path=" + path : "") +
            ((domain) ? "; domain=" + domain : "") +
            "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}

I've put these JavaScript functions into a convenient file: cookies.js for you to download. Then whenever you need to use them, simply put something like the following in the head section of your HTML page:

<script type="text/javascript" src="cookies.js"></script>

JavaScript Cookie Example

<input type="button" value="Set Cookie"
    onclick='setCookie("data", prompt("Enter some data:"))' />

That looked pretty easy didn't it? You can try it out now:

Now for reading the cookie:

<a href="#" onclick='alert(getCookie("data"));return false'>Get Cookie!</a>

Get Cookie!

6 Responses to “Cookies in JavaScript”

  1. murali mohan rao

    1 year, 8 months ago

    It is very nice to share knowledge

  2. Daniel

    1 year, 8 months ago

    Really helpful!

  3. Tom

    1 year, 8 months ago

    Hi there,

    I've built a form for peolpe to submit a vote and I thought the best way to restrict people voting twice would be to create a cookie called "voted" and set the value to 1 when they vote.

    When the page loads I want it to check for the cookie to see if that person has voted or not.

    I copied your script and it works great. I can create a cookie called Voted with a value of 1, but how can I set an expiry date of say.. December on the cookie? I can't seem to work it out. Thanks a lot! Tom

  4. jason

    1 year, 8 months ago

    You'll want to use an expiry date of something like:

    new Date(new Date().getTime() + (30*24*60*1000))
    

    to make the cookie expire 30 days in the future.

  5. Vishant Patil

    1 year, 7 months ago

    To delete the we need to reload the browser... Is there any option that will delete/remove cookie without refreshing the browser?

  6. Daniel

    10 months, 1 week ago

    To remove a cookie, you would set the expirey date to a time in the past (it's self-explanitory) new Date(new Date().getTime() - (3600))

    Need any more help? email me. digimonfan851@gmail.com

Leave a Comment

:
: