I'm trying to set a cookie that will expire at the end of the day. I've create this function :
function mnc(cname,cvalue)
{
var now = new Date();
var expire = new Date();
expire.setFullYear(now.getFullYear());
expire.setMonth(now.getMonth());
expire.setDate(now.getDate()+1);
expire.setHours(0);
expire.setMinutes(0);
//alert(expire.toGMTString() + " " + expire.toString());
var expires = "expires="+expire.toString();
alert(expires + "=> now =" + now);
document.cookie = cname + "=" + cvalue + "; " + expires +"; path=/";
}
On Fiddle : http://jsfiddle.net/MYs6b/
So, the alert box show me the good expiration date.
But, if I change the date on my computer by adding 1 or 100 days, i still have the same value in the cookie.
Why? I'm searching since 3 hours and i don't understand...
EDIT :
I've had an alert on "document.cookie" is empty
http://jsfiddle.net/MYs6b/2/
EDIT 2 :
I've add a better example of my problem. It's working on IE and FF but not on chrome :
http://jsfiddle.net/5h87M/1/
Try This: http://jsfiddle.net/MYs6b/1/
function mnc(cname,cvalue)
{
var now = new Date();
var expire = new Date();
expire.setFullYear(now.getFullYear());
expire.setMonth(now.getMonth());
expire.setDate(now.getDate()+1);
expire.setHours(0);
expire.setMinutes(0);
expire.setSeconds(0);
var expires = "expires="+expire.toString();
alert(expires + "=> now =" + now);
document.cookie = cname + "=" + cvalue + "; " + expires +"; path=/";
}
mnc("test", "123456");
Last update of chrome correcting this issue.
function createCookie(name,value,path) {
var expires = "";
var date = new Date();
var midnight = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59);
expires = "; expires=" + midnight.toGMTString();
if (!path) {
path = "/";
}
document.cookie = name + "=" + value + expires + "; path=" + path;
}
Related
I have set few cookies for my ecommerce website to keep track of users ordered items, if users choose to delete those items the cookies should also be deleted, however for some odd reason safari is not deleting those cookies. any other browser the cookies are being deleted fine.
Here is the link for the website if anyone wants to have a look: (link not available anymore) click on first item "blankets and towels" then choose any items from the 3 options, add it to card then go to basket, you should see on top left corner "numbers of cookies = 5" if u ordered more items it will increase, once all items is deleted from the cart it should say "numbers of cookies = 3" however in safari it still says 5.
Javascript
if(confirm("Are you sure you want to delete this item"))
{
var i = 1;
while(true){
var value = "; " + document.cookie;
var parts = value.split("; " + "order"+i + "=");
if(parts.length === 2){
var results = parts.pop().split(";").shift();
var temp = results.split(" ");
if(temp[0] === id)
{
var d = new Date();
d.setTime(d.getTime() + 1000*60*60*24*60);
var exp = "expires=" + d.toUTCString();
var name = "order"+i;
temp[2] = temp[2] - 1; **REmove one item from order**
var val = temp[0] + " " + temp[1] + " " + temp[2];
if(temp[2] === 0){ **if cookie has 0 items then delete cookie**
document.cookie = name + "=" + '' + ";" + '=;expires=Thu, 01 Jan 1970 00:00:01 UTC;'+ ";path=/";
setNewTotal();
}else{
document.cookie = name + "=" + val + ";" + exp + ";path=/";
setNewTotal();
}
window.location.reload(true);
break;
}
}
i++;
}
window.location.reload(false);
}else{
}
}
function setNewTotal(){
var value = "; " + document.cookie;
var parts = value.split("; " + "totalOrders=");
if(parts.length === 2) {
var results = parts.pop().split(";").shift();
}
results = results - 1;
var d = new Date();
if(results === 0){
document.cookie = "totalOrders=" + '' + ";" + '=;expires=Thu, 01 Jan 1970 00:00:01 UTC;' + ";path=/";
}else{
d.setTime(d.getTime() + 1000*60*60*24*60);
var exp = "expires=" + d.toUTCString();
document.cookie = "totalOrders=" + results + ";" + exp + ";path=/";
}
}
I figured it out when deleting the cookies I specified the time wrong, seems all other browsers ignored it except safari.
old code:
document.cookie = "totalOrders=" + '' + ";" + '=;expires=Thu, 01 Jan 1970 00:00:01 UTC;' + ";path=/";
New code
document.cookie = "totalOrders=" + '' + ";" + 'expires=Thu, 01 Jan 1970 00:00:01 UTC;' + ";path=/";
Notice that '=;expires=Thu,' was replaced with 'expires=Thu,' this is because I had already set = "totalOrders=" + '' + ";" therefore there was no need for =;
Thank you for the help very appreciate :)
I'm trying to create a cookie and set an expiration date but it stays as "Session". I'm using Google Chrome.
What am I doing wrong?
document.cookie = "savedTests=[{'id':12345678}];expires=" + date.toUTCString() + ";path=/" ;
Try This, Changed some layout for better understanding :
var cookieName = 'savedTests';
var cookieValue = [
{'id':12345678}
];
var cookieString = JSON.stringify(cookieValue);
var addDays = 2;
var newDate = new Date();
newDate.setTime(newDate.getTime() + (addDays*24*60*60*1000));
var expiresInTime = "expires="+ newDate.toUTCString();
document.cookie = cookieName + "=" + cookieString + ";" + expiresInTime + ";path=/";
Result :
I was wondering if following function is a proper way of setting new cookie.
function setCookie()
{
var value='tackoverhide';
var now = new Date();
var time = now.getTime();
time += 3600 * 1000;
now.setTime(time);
document.cookie ='tackoverhide='+ value +'; expires=' + now.toUTCString() + '; path=/';
}
Here's the code snippet for setting cookie using JavaScript. It's almost the same as your function without minor mistakes.
function setCookie() {
var name = 'tackoverhide';
var value = 'tackoverhide';
var d = new Date();
var hours = 1;
d.setTime(d.getTime() + (hours*60*60*1000));
var expires = "expires="+d.toUTCString();
document.cookie = name + "=" + value + "; " + expires;
}
I am trying to save cookies in JavaScript and then display them on the page again but for some reason my setCookies function and displayCookies function is not working properly.. I want it to also expire after 1 week. It is coming from a form and when I put it in Web Developer in FireFox it says Reference Error setCookies and displayCookies is not defined. My jsfiddle is : http://jsfiddle.net/FmXJW/
function setCookies()
{
// this function will set cookies for each field in the reservation form, and set them to expire after one day
var Name = document.forms[0].txtName.value;
var Address = document.forms[0].txtAddress.value;
var City = document.forms[0].txtCity.value;
var State = document.forms[0].txtState.value;
var Zip = document.forms[0].txtZip.value;
var Email = document.forms[0].txtEmail.value;
var CarType = document.forms[0].txtCarType.value;
var PickupDate = document.forms[0].txtPickupDate.value;
var ReturnDate = document.forms[0].txtReturnDate.value;
var myDate = newDate();
myDate.setDate(myDate.getDate() + 7);
document.cookie = "name=" + encodeURIComponent(Name) + "; expires=" + myDate.toUTCString();
document.cookie = "address=" + encodeURIComponent(Address) + "; expires=" + myDate.toUTCString();
document.cookie = "city=" + encodeURIComponent(City) + "; expires=" + myDate.toUTCString();
document.cookie = "state=" + encodeURIComponent(State) + "; expires=" + myDate.toUTCString();
document.cookie = "zip=" + encodeURIComponent(Zip) + "; expires=" + myDate.toUTCString();
document.cookie = "email=" + encodeURIComponent(Email) + "; expires=" + myDate.toUTCString();
document.cookie = "carType=" + encodeURIComponent(CarType) + "; expires=" + myDate.toUTCString();
document.cookie = "pickupDate=" + encodeURIComponent(PickupDate) + "; expires=" + myDate.toUTCString();
document.cookie = "returnDate=" + encodeURIComponent(ReturnDate) + "; expires=" + myDate.toUTCString();
window.alert ("Your reservation has been saved.");
} // end function setCookies()
function displayCookies()
{
// this function will read the saved cookies, and repopulate the form with the cookie values
var cookieString = decodeURIComponent(document.cookie);
var cookieArray = cookieString.split("; ");
if (document.cookie == 0)
{
alert("You have not made a reservation");
}
else
{
// retrieve each cookie, and display the cookie value in the appropriate form field
document.forms[0].txtName.value = cookieArray[0].lastIndexOf("=") + 1);
document.forms[0].txtAddress.value = cookieArray[1].lastIndexOf("=") + 1);
document.forms[0].txtCity.value = cookieArray[2].lastIndexOf("=") + 1);
document.forms[0].txtState.value = cookieArray[3].lastIndexOf("=") + 1);
document.forms[0].txtZip.value = cookieArray[4].lastIndexOf("=") + 1);
document.forms[0].txtEmail.value = cookieArray[5].lastIndexOf("=") + 1);
document.forms[0].txtCarType.value = cookieArray[6].lastIndexOf("=") + 1);
document.forms[0].txtPickupDate.value = cookieArray[7].lastIndexOf("=") + 1);
document.forms[0].txtReturnDate.value = cookieArray[8].lastIndexOf("=") + 1);
}
} // end function displayCookies()
You have a couple of problems on your code:
You are not retrieving the value from the different fields stored on the cookie correctly, you need to use slice to get the right part.
I also guess the line var myDate = newDate(); should be var myDate = new Date();.
I have changed your fiddle (find it here) and loaded the code in <head> and now it seems to save and display the cookies correctly.
I am setting a cookie, but I don't want it to just work for one directory. How do I make it to where it's read throughout my whole site? I'm pretty new at JavaScript, thanks guys!
<script>
function setCookie(val) {
var d = new Date();
d.setDate(d.getDate() + 300);
document.cookie = "roster_count" + "=" + escape(val) + "; expires=" + d.toGMTString();
delete d;
}
</script>
The the path /:
document.cookie = "roster_count" + "=" + escape(val) + "; expires=" + d.toGMTString() + "; path=/";