`
zhaoshijie
  • 浏览: 2262832 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

js操作cookie(增删改查)

    博客分类:
  • JS
 
阅读更多
关键字:js操作cookie(增删改查)


附件是js操作cookie的增删改查例子、js工具类和java中Cookie工具列,请参考,希望能帮助大家!




另外关于删除cookie失败的原因及解决办法如下:
解决简要:删除cookie保险的方式就是 设置Cookie时是什么样式,删除时就应该是什么样式,加上expires属性就行了(一般expires属性设置为-1就可以了)



JS 无法清除Cookie的解决方法

项目中使用sdmenu.js时,需要在登录时清除Cookie,而sdmenu默认是会保存Cookie的

下面是sdmenu.js保存Cookie的方法

document.cookie = "sdmenu_" + encodeURIComponent(this.menu.id) + "=" + states.join("") + "; expires=" + d.toGMTString() + "; path=/";



下面是我到网上找的清除Cookie的方法,始终都无法删除Cookie

  1、传递Cookie名称

function deleteCookie(name){
          var date=new Date();
          date.setTime(date.getTime()-10000);
          document.cookie=name+"=v; expire="+date.toGMTString()+"; path=/";


2、循环删除所有Cookie

// js 遍历所有Cookie
function foreach()
{
  var strCookie=document.cookie;
  var arrCookie=strCookie.split("; "); // 将多cookie切割为多个名/值对
  for(var i=0;i <arrCookie.length;i++)
{ // 遍历cookie数组,处理每个cookie对
    var arr=arrCookie[i].split("=");
    if(arr.length>0)
    DelCookie(arr[0]);
}

}
function GetCooki(offset)

{
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return decodeURIComponent(document.cookie.substring(offset, endstr));
}
function DelCookie(name)
{
var exp = new Date();
exp.setTime (exp.getTime() - 1);
var cval = GetCookie (name);
document.cookie = name + "=" + cval + "; expires="+ exp.toGMTString();
}

function GetCookie(name)
{
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen)
{
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return GetCooki (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}



后来发现这个网址,介绍了无法删除Cookie的原因

http://php.js.cn/blog/delete-cookie/

今天遇到一个cookie的问题: 名叫username的,域为www.umiwi.com的cookie无法删除,导致用户登录以后无法退出。搞了半天终于发现问题所在:原来是我关于cookie的基础知识没搞清楚 。。。。

    Cookie不仅仅有名字和值两个属性,还有域(domain),过期时间(expires),路径(path)等属性。 其中,不同的域、不同的路径下可以存在同样名字的cookie。 比如这个页面:  用鼠标戳我

    一般我们删除cookie的方法是用一个同样名字、过期时间为过去某个时候的Cookie覆盖之。 这时就一定要搞清楚你要删除的cookie的域和路径,Cookie域和路径要一样才能被覆盖。 否则产生的效果就是那个想要被删除的Cookie具有神奇的生命力,无法被清除~~~

    另外,我发现在设置Cookie的时候,如果没有指定域名,那么设置的这个cookie的域默认为当前域,比如www.umiwi.com。 如果设置的时候指定了某个域,那么浏览器存的时候会自动在前面加.。比如PHP代码: setcookie('test','a',0,'www.umiwi.com');  那么 浏览器里面存的Cookie的域为.www.umiwi.com。 所以,最好的方式是设置Cookie的时候怎么写的,删除的时候就怎么写。  要不就会出现我遇到的情况: 明明浏览器里看有 username=longbill,域为www.umiwi.com的Cookie,但是在php里写 setcookie('username','',time()-1000,'www.umiwi.com','/'); 无法删除那个Cookie。 原因就是我删Cookie的操作其实上是发了一个新的名叫username、值为空、过期时间为过去1000秒、域为.www.umiwi.com、路径为/的Cookie。这个Cookie发到浏览器马上就过期了,什么也看不到。而我要删除的在http://www.umiwi.com/上的cookie还活的好好的。。。







原来是删除Cookie的代码中没有加 路径(path)

原:

document.cookie = "sdmenu_" + encodeURIComponent(this.menu.id) + "=" + states.join("") + "; expires=" + d.toGMTString() + "; path=/";

新:

         var date=new Date();
          date.setTime(date.getTime()-10000);
          document.cookie=name+"=v; expire="+date.toGMTString()+"; path=/";

除了路径(path),可能还有域等其它情况,保险的方式就是 设置Cookie时是什么样式,删除时就应该是什么样式,加上expire属性就行了




特别注意:CookieUtil.js工具类操作cookie时地址栏的域名必须是IP地址(或者127.0.0.1)  使用localhost会失败,一定注意 谢谢...
分享到:
评论

相关推荐

    通过js实现cookies 的增删改查

    通过js实现cookies 的增加删除修改,解决chrome读为 undefine 的问题

    使用es6封装的一个用于cookie增删改查的js模块

    以下是对“使用es6封装的一个用于cookie增删改查的js模块”的详细解释。 1. **基础概念** - **Cookie**:Cookie是由服务器端设置并返回到浏览器的一小段文本信息,浏览器会将这些信息存储在本地,并在后续请求中...

    使用JavaScript实现Cookie的增删改查操作

    本文将详细介绍如何使用JavaScript实现Cookie的增删改查操作。 首先,理解Cookie的基本概念是必要的。Cookie由服务器端设置,并发送到用户的浏览器,浏览器会在后续的请求中携带这些Cookie返回给服务器。每个Cookie...

    IndexedDB增删改查插件,分别对增删改查进行了封装,调用对应的函数即可

    其实在前端的领域里面也有数据库,只是可能用的比较少,因为前端存储方案有很多,比如cookie、sessionstorage等等。 在浏览器上有两种数据库:webSQL和IndexedDB。但是如果在浏览器上需要用到数据库一般会使用...

    留言板 增删改查

    在IT行业中,"留言板 增删...总的来说,"留言板 增删改查"项目是一个综合性的Web开发练习,涵盖了前端界面设计、后端逻辑处理、数据库操作以及用户认证等多个重要方面,对于初学者来说,这是一个很好的学习和实践平台。

    JS操作Cookie,子键(增删改查)纯js页面

    本教程将深入探讨如何使用纯JavaScript操作Cookie,尤其是涉及到Cookie的子键(subkeys)的增删改查操作,以及如何利用这些信息进行异步调用,实现无刷新页面交互。 首先,我们需要了解Cookie的基本结构。一个...

    nodejs+express+mongodb 博客系统增删改查完整版

    可能包括登录验证(如session或cookie管理)、角色基础的访问控制(如管理员才能删除博客)、以及对敏感操作的授权检查。 10. **文件结构与项目管理**: "heExpressProject"可能是项目的主要文件夹,包含所有源代码...

    最简单的bootstarp增删改查加登录注册

    3. **增删改查(CRUD)功能**:CRUD代表Create(创建)、Read(读取)、Update(更新)和Delete(删除),是数据库操作的基本动作。在这个项目中,可能通过HTML表单与后端交互,实现对数据的这些基本操作。 4. **...

    jquery_table_ajax表头增删改查操作

    2,Jquery 操作 Table 的数据,主要是增删改查不显示在每一条数据的后面; 3,对修改操作使用了jquery.cookie.js ,并做了cookie最大值的判断,防止无效(其实不判断最大值也关系不大); 4,页面需要自己美化; 5,...

    JspWeb网站增删改查

    2. **数据库交互**:项目中涵盖了数据库的增删改查操作。这通常涉及到使用Java Database Connectivity (JDBC) API连接到数据库,执行SQL语句,如INSERT、DELETE、UPDATE和SELECT。理解如何创建PreparedStatement以...

    jsp页面,连接数据库实现增删改查

    本主题聚焦于使用JSP来设计用户注册与登录功能,并通过连接数据库实现数据的增删改查操作,这在Web应用开发中是非常基础且重要的环节。 首先,我们要理解JSP的工作原理。JSP是一种服务器端的技术,它将HTML代码、...

    jsp+mysql实现注册登录和管理员登陆实现增,删,改,查数据功能

    一旦验证成功,管理员可以执行增删改查操作,比如添加新用户、删除用户、修改用户信息,或者查询数据库中的所有用户信息。这些操作通常需要在JSP页面上创建对应的表单,然后通过Servlet或JSP的后台逻辑来执行SQL命令...

    购物商城增删改查,分页技术基本实现

    本项目采用SQL Server数据库作为数据存储平台,它是一个功能强大的关系型数据库管理系统,适用于处理大量的数据,并且提供了丰富的SQL语法来执行增、删、改、查(CRUD)操作。 "增",即添加新数据,比如添加新的...

    Javascript Cookie操作类的封装

    本文将详细讲解如何封装一个Cookie操作类,实现对Cookie的增删改查功能。 首先,理解Cookie的基本概念是必要的。Cookie是由服务器端发送到浏览器并保存在本地的一个小文本文件,它由键值对组成,每个键值对之间用...

    利用JavaWeb+MySQL+eclipse实现的一个图书管理系统,主要功能包括用户登录注册和图书的增删改查.zip

    在这个图书管理系统中,MySQL存储了用户信息和图书数据,通过JDBC(Java Database Connectivity)接口与Java代码进行通信,执行SQL语句来完成数据的增删改查。 6. **JDBC**: JDBC是Java访问数据库的标准API,它提供...

    js操作cookie

    这是一个封装好的js对象函数,用于对cookie的增删改查。

Global site tag (gtag.js) - Google Analytics