afryingpan
afryingpan

Reputation: 363

Multiple values on one cookie

The code I wrote should store multiple user values on one cookie, but for some reason it's not working. Can anyone care to explain my mistake?

var delimiter = "#";

function createCookie(name, value, days, path, domain, secure) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
    var expires = date.toGMTString();
  } else var expires = "";
  cookieString = name + "=" + escape(value);
  if (expires)
    cookieString += "; expires=" + expires;
  if (path)
    cookieString += "; path=" + escape(path);
  if (domain)
    cookieString += "; domain=" + escape(domain);
  if (secure)
    cookieString += "; secure";
  document.cookie = cookieString;
}

function getCookie(name) {
  var nameEquals = name + "=";
  var whole_cookie = document.cookie.split(nameEquals)[1].split(";")[0];
  var crumbs = whole_cookie.split(delimiter);
}

function deleteCookie(name) {
  createCookie(name, "", -1);
}

function myCookie() {
  var name = document.getElementById('name').value;
  var age = document.getElementById('age').value;
  var userdata = name + delimiter + age;
  createCookie("user", userdata);
  var myUser = getCookie('user');
  var myUserArray = myUser.split(delimiter);
  var cookieName = myUserArray[0];
  var cookieAge = myUserArray[1];
  alert('The cookie created has the following user information stored on it: \nName: ' + cookieName '\nAge: ' + cookieAge);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

Please enter your name
<input type=text id='name' />
<br>
<br>Please enter your age
<input type=text id='name' />
<input type=button value='Go!' onClick='myCookie()' />

Upvotes: 2

Views: 8717

Answers (1)

mbinette
mbinette

Reputation: 5094

There are a couple of mistakes in your code:

  1. In getCookie, you forgot to return the value of your cookie !

    function getCookie(name) {
        var nameEquals = name + "=";
        var whole_cookie=document.cookie.split(nameEquals)[1].split(";")[0];         
        return whole_cookie;
    }
    
  2. You have two inputs with id name, I think you want to rename one of them to age.

  3. Make sure your document is fully loaded before you try to execute your Javascript! Either do that by wrapping your code around document.body.onload = function(){ [your code here] }, or by moving your <script> tag at the end of your document.

  4. You are missing a + between cookieName and '\nAge' in your alert.


var delimiter = "#";

function createCookie(name, value, days, path, domain, secure) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
    var expires = date.toGMTString();
  } else var expires = "";
  cookieString = name + "=" + escape(value);
  if (expires)
    cookieString += "; expires=" + expires;
  if (path)
    cookieString += "; path=" + escape(path);
  if (domain)
    cookieString += "; domain=" + escape(domain);
  if (secure)
    cookieString += "; secure";
  document.cookie = cookieString;
}

function getCookie(name) {
  var nameEquals = name + "=";
  var whole_cookie = document.cookie.split(nameEquals)[1].split(";")[0];
  return whole_cookie;
}

function deleteCookie(name) {
  createCookie(name, "", -1);
}

function myCookie() {
  var name = document.getElementById('name').value;
  var age = document.getElementById('age').value;
  var userdata = name + delimiter + age;
  createCookie("user", userdata);
  var myUser = getCookie('user');
  var myUserArray = myUser.split(delimiter);
  var cookieName = myUserArray[0];
  var cookieAge = myUserArray[1];
  alert('The cookie created has the following user information stored on it: \nName: ' + cookieName + '\nAge: ' + cookieAge);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

Please enter your name
<input type=text id='age' />
<br>
<br>Please enter your age
<input type=text id='name' />
<input type=button value='Go!' onClick='myCookie()' />

Upvotes: 1

Related Questions