42

I cannot get this code to work I must be missing something pretty simple. I am trying to check to see if a Cookie exists, if it does {do nothing} if it doesn't {create it}. I am testing the cookie by including an alert on a page. Basically I do not want the cookie to keep re-creating with a referral url, I am trying to grab only the FIRST referred URL.

$(document).ready(function(){   
  if ($.cookie('bas_referral') == null ){
   var ref = document.referrer.toLowerCase();  
   // set cookie  
   var cookURL =  $.cookie('bas_referral', ref, { expires: 1 }); 
  } 
 });  

Displaying the current cookie contents:

    // get cookie  
    alert($.cookie('bas_referral'));  

    // delete cookie  
     $.cookie('bas_referral', null);
3
  • Appears to be working just fine: jsfiddle.net/niklasvh/wxFvG. Have you included the $.cookie plugin source code in your page? Commented Jun 15, 2011 at 18:48
  • Are you opening the page by HTTP? (and thus not from local disk file system) What cookie plugin are you using? What time unit is the expires value? Seconds? So, it expires in 1 second? Commented Jun 15, 2011 at 18:48
  • I am using the jquery.cookie.js plugin and my alert displays the previous URL I was on, so I believe the cookie is being created. HOWEVER, if I were to go to different pages throughout the site, the alert displaying the cookie URL will change, it shouldn't being I set an IF-Statement. Commented Jun 15, 2011 at 18:54

5 Answers 5

88

I think the bulletproof way is:

if (typeof $.cookie('token') === 'undefined'){
 //no cookie
} else {
 //have cookie
}

Checking the type of a null, empty or undefined var always returns 'undefined'

Edit: You can get there even easier:

if (!!$.cookie('token')) {
 // have cookie
} else {
 // no cookie
}

!! will turn the falsy values to false. Bear in mind that this will turn 0 to false!

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

9 Comments

WARNING: typeof null === 'object' as Dan comments below.
this is the correct answer for the given question, @foo! While I tested the code, the true false context was vice versa: if (!!$.cookie('token')) { // have cookie } else { // no cookie }
woah! it checks null, empty and undefined! Didn't know there's a shorter way to check those three before. Nice
what if the value of the cookie was false? probably better to check null and undefined
@foo the shorter answer isnt working for me. it is showing the opposite as to what the answer says - for me at least!
|
26
 $(document).ready(function() {

     var CookieSet = $.cookie('cookietitle', 'yourvalue');

     if (CookieSet == null) {
          // Do Nothing
     }
     if (jQuery.cookie('cookietitle')) {
          // Reactions
     }
 });

3 Comments

i don't know why but this is setting a cookie, not checking if one exists, very strange!
var CookieSet = $.cookie('cookietitle', 'yourvalue'); not works on my pc, what can be the reason? I'm using although jquery 1.9.1 library.
Hmm I found the reason; I didn't have been installed the plugin from GitHub, I realised this was a native function. People who read this should download the plugin from (thank you @Kazar) : github.com/carhartl/jquery-cookie
10

I was having alot of trouble with this because I was using:

if($.cookie('token') === null || $.cookie('token') === "")
{
      //no cookie
}
else
{
     //have cookie
}

The above was ALWAYS returning false, no matter what I did in terms of setting the cookie or not. From my tests it seems that the object is therefore undefined before it's set so adding the following to my code fixed it.

if($.cookie('token') === null || $.cookie('token') === "" 
    || $.(cookie('token') === "null" || $.cookie('token') === undefined)
{
      //no cookie
}
else
{
     //have cookie
}

Comments

2

You can set the cookie after having checked if it exists with a value.

 $(document).ready(function(){            
      if ($.cookie('cookie')) { //if cookie isset
         //do stuff here like hide a popup when cookie isset
         //document.getElementById("hideElement").style.display = "none";
      }else{
         var CookieSet = $.cookie('cookie', 'value'); //set cookie
      }       
 });

Comments

1

Try this very simple:

            var cookieExist = $.cookie("status");
            if(cookieExist == "null" ){
                alert("Cookie Is Null");

            }

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.