从cookie中读取特定值

时间:2013-06-05 15:44:20

标签: javascript cookies

我有一个为该域写一个cookie的应用程序。这个cookie中有很多信息,但没有任何敏感信息。它存储的一个值是“DisplayFullName”,我想要检索它。

我已经搜索了一段时间,发现了许多代码示例,允许您读取cookie(其中包含所有值),但没有任何特别允许您读取特定值的代码。我确实找到了一个jquery示例,但看起来它正在循环遍历值。但是我的cms没有安装jquery,所以想用老式的方式来做。

这是我必须阅读cookie的代码,这似乎工作正常。我只需要阅读具体的价值。有人可以帮助或指出我正确的方向。

function getCookie(name)
{
  var re = new RegExp(name + "=([^;]+)");
  var value = re.exec(document.cookie);
  return (value != null) ? unescape(value[1]) : null;
}

alert(getCookie("ecm"));

我想最终将DisplayFullName添加到iframe ID的src中,我将MyIframe称为参数。

2 个答案:

答案 0 :(得分:1)

我给你的建议是根本不使用cookies。使用localStorage界面,该界面具有更加用户友好的语法。

例如:

localStorage['ecm'] = 'some value';
alert(localStorage['ecm']);

由于它只是一个Javascript对象,您还可以使用点符号:

localStorage.ecm = 'some value';
alert(localStorage.ecm);

这仅限于现代浏览器中。如果向后兼容性很重要,则可以使用各种垫片,例如: this one,它使所有浏览器都能在幕后使用老式cookie。

答案 1 :(得分:0)

这对你有用。它只是遍历cookie,寻找你传递的名字。

function getCookieByName(name) {
    var cookies = document.cookie.split(";"),
        yerCookie = null,
        cookiePair;

    for (var i=0; i < cookies.length; i++) {
        cookiePair = cookies[i].split("=");
        if (cookiePair[0].trim() === name) {
            yerCookie = cookiePair.slice(1).join("=");
            break;
        }
    }

    return yerCookie;
}

或者你可以使用来自here

的这个漂亮的功能
function readCookie(name) {
    var nameEQ = name + "=",
        ca = document.cookie.split(';'),
        i, c;

    for (i=0; i < ca.length; i++) {
        c = ca[i];
        while (c.charAt(0)==' ') {
            c = c.substring(1,c.length);
        }

        if (c.indexOf(nameEQ) == 0) {
            return c.substring(nameEQ.length,c.length);
        }
    }
    return null;
}

获得ecm cookie后,请使用以下内容解析:

function getECMCookieProperty(ecmCookie, prop) {

    if (!ecmCookie) {
        return undefined;
    }

    var props = ecmCookie.split("&"),
        result = null,
        propList;

    for (var i=0;i<props.length;i++){
        propList = props[i].split("=");
        if (propList[0] === prop) {
            result = unescape(propList[1]);
            break;
        }
    }
    return result;
}

使用这些,请执行:

var ecmCookie = getCookieByName("ecm");
var displayFullName = getECMCookieProperty(ecmCookie, "DisplayFullName");
alert(displayFullName)