• CookieHelper JS封装Cookie 存取方法


    微信的一些页面会去获取授权,然后在回调到页面,但是这样的话通过url传递的参数有可能丢失掉,我采用存储cookie的方式来传值

    建一个CookieHelper.js文件

    function CookieHelper() {
    
    }
    //删除cookie
    CookieHelper.prototype.deleteCookie = function (name) {
        var date = new Date();
        date.setTime(date.getTime() - 10000);
        document.cookie = name + "=v; expires=" + date.toGMTString() + ";path=/";
    }
    
    
    
    //设置cookie
    CookieHelper.prototype.setCookie = function (name, value) {
        //设置之前先删除
        this.deleteCookie(name);
        //获取当前时间 
        var date = new Date();
        var expiresDays = 10;
        //将date设置为10天以后的时间 
        date.setTime(date.getTime() + expiresDays * 24 * 3600 * 1000);
        //cookie设置为10天后过期 
        document.cookie = name + "=" + value + "; expires=" + date.toGMTString() + ";path=/";
        document.cookie
    }
    
    //获取某一cookie key=value
    CookieHelper.prototype.getCookie = function (name) {
        var strCookie = document.cookie;
        var arrCookie = strCookie.split("; ");
        for (var i = 0; i < arrCookie.length; i++) {
            var arr = arrCookie[i].split("=");
            if (arr[0] == name) {
                return arr[1];
            }
        }
        return "";
    }
    //获取cookie 类型 key=id=123&name=qwe&pwd=uio
    CookieHelper.prototype.getCookies = function (name) {
        var strCookie = document.cookie;
        var arrCookie = strCookie.split("; ");
        for (var i = 0; i < arrCookie.length; i++) {
            var arr = arrCookie[i].split("=");
            if (arr[0] == name) {
            return arrCookie[i].substring(arrCookie[i].indexOf("=") + 1)
            }
        }
        return "";
    }
    //获取所有cookie
    
    CookieHelper.prototype.getAllCookie = function (name) {
        var strCookie = document.cookie;
        var arrCookie = strCookie.split("; ");
        if (arrcookie.length > 0) {
            return arrCookie;
        } else {
            return "";
        }
    }

    页面调用<script type="text/javascript" src="CookieHelper"></script>

    在页面的js中调用上面封装的方法

    //
    function booking(id, num) {
        if (parseInt(num == 0)) {
            return false;
        } else {
            var startDate = document.getElementById("startDate").value;
            var endDate = document.getElementById("endDate").value;
           //声明封装方法存储Cookie
            var cookiehelp = new CookieHelper();
            var name="Bookingvalue";
            var value = "UnitID=" + id + "&startDate=" + startDate + "&endDate=" + endDate;
           //调用存储Cookie方法
            cookiehelp.setCookie(name, value);
    
            var startDate = document.getElementById("startDate").value;
            var endDate = document.getElementById("endDate").value;
            window.location.href = "Booking.aspx?UnitID=" + id + "&startDate=" + startDate + "&endDate=" + endDate;
        }
    }

    这样就完成了存储cookie。

    这里存储的cookie是多参数的,调用时C#采用下图方式:

    HttpCookie Cookie = System.Web.HttpContext.Current.Request.Cookies["Bookingvalue"];
                if (Cookie != null)
                {
                    unitID = Convert.ToInt32(Cookie["UnitID"]);
                }
                if (unitID > 0)
                {
                     
                    
                    if (!string.IsNullOrEmpty(HttpContext.Current.Request.Cookies["Bookingvalue"]["startDate"]))
                    {
                        if (Convert.ToDateTime(HttpContext.Current.Request.Cookies["Bookingvalue"]["startDate"]) >= DateTime.Now)
                        {
                            startDate = HttpContext.Current.Request.Cookies["Bookingvalue"]["startDate"];
                        }
                        else
                        { }
                    }
                    if (!string.IsNullOrEmpty(HttpContext.Current.Request.Cookies["Bookingvalue"]["endDate"]))
                    {
                        if (Convert.ToDateTime(HttpContext.Current.Request.Cookies["Bookingvalue"]["startDate"]) >= Convert.ToDateTime(HttpContext.Current.Request.Cookies["Bookingvalue"]["endDate"]))
                        {
                            endDate = Convert.ToDateTime(startDate).AddDays(1).ToShortDateString();
                        }
                        else
                        {
                            endDate = HttpContext.Current.Request.Cookies["Bookingvalue"]["endDate"];
                        }
                    }
           }

    很久很久之后,erp中在后台存储了个cookie,然后我激动的使用js去删除这个cookie,删除失败,我很困惑,究竟是方法不行还是人不行,最后检查时发现下图:

    这个后台存的是session我居然天真的以为后台的方法名字叫什么就是什么功能,坑啊。 

  • 相关阅读:
    前端总结--性能优化
    Vue面试中,经常会被问到的面试题/Vue知识点整理
    面试怎么样?才会容易进入到心仪公司了
    Vuex,从入门到入门
    当面试官问你“有什么缺点”时,应如何体面的回答?
    Linux下文件搜索、查找、查看命令
    线程池运行机制
    win10右键很慢
    Linux 安装 Tomcat7
    Tomcat / Nginx 跨域
  • 原文地址:https://www.cnblogs.com/zhaokunbokeyuan256/p/6004814.html
Copyright © 2020-2023  润新知