在网上搜索了很多JS cookie保存多个参数的写法,大多数都是用字符串通过分号隔开保存,试验之后发现满足不了要求,
我保存多个参数,最终读取时只有一个参数, 于是又找到下面这种方法:
cookie改变它的赋值并不意味着丢失原来的值:
document.cookie = "provinceId=" + escape(areaData.provinceId);
等同于 document.addcookie
///在 cookie 变量中存储
function setAreaCookie(areaData, expiredays) {var exdate = new Date()
exdate.setDate(exdate.getDate() + expiredays)
//cookie改变它的赋值并不意味着丢失原来的值
document.cookie = "provinceId=" + escape(areaData.provinceId);
document.cookie = "cityId=" + escape(areaData.cityId);
document.cookie = "distId=" + escape(areaData.distId);
document.cookie = "streetId=" + escape(areaData.streetId);
document.cookie = "neighborhoodId=" + escape(areaData.neighborhoodId);
document.cookie = "expires=" + exdate.toGMTString();
}
由于JS cookie 没有直接通过名称取值的方法,于是自己写了一个,通过传入Cookie名称取值的方法:
//根据名称获得Cookie值
function GetCookieByName(name) {
var startIndex = document.cookie.indexOf(name); //开始索引
if (startIndex > -1) {
var tempStr = document.cookie.substring(startIndex, document.cookie.length);
var endIndex = tempStr.indexOf(";")//结束索引:第一个分号 索引
var item = tempStr.substring(0, endIndex);
return item.split("=")[1];
}
return "";
}
我的调用方法:
///检查是否已设置 cookie
function getAreaCookie() {
var areaData = {
provinceId: GetCookieByName("provinceId"),
cityId: GetCookieByName("cityId"),
distId: GetCookieByName("distId"),
streetId: GetCookieByName("streetId"),
neighborhoodId: GetCookieByName("neighborhoodId")
};
return areaData;
}