3

我正在尝试使用 jQuery 为站点设置 cookie,仅当用户来自特定站点时。在这种情况下,让我们使用 -http://referrersite.com- 作为他们必须来自的站点,以便创建 cookie 作为示例。cookie 值存储在一个变量中,到目前为止一切正常。

有一个条件语句检查用户是否来自被推荐的站点、cookie 是否已经存在以及 cookie 是否不存在并且用户不是来自被推荐的站点。如果用户来自被引用的站点,则会创建 cookie 并将其存储在变量中。如果 cookie 已经存在,则将其存储在变量中。如果 cookie 不存在并且用户不是来自所引用的站点,我将为变量分配一个静态字符串 - 这就是问题所在。

当变量从非引用站点发出警报并且没有现有 cookie 时,它​​返回:[object Object],而不是静态字符串。

我正在使用的代码如下:

$(document).ready(function() {

    var referrer = document.referrer;

    if(referrer == "http://referrersite.com") {

        $.cookie("code","123456", { expires: 90, path: '/' });
        cookieContainer = $.cookie("code");
        alert(cookieContainer);

    } else if($.cookie("code")) {

        cookieContainer = $.cookie("code");
        alert(cookieContainer);

    } else if($.cookie("code") == null && referrer != "http://referrersite.com") {

        cookieContainer = "67890";
        alert(cookieContainer);

    }

});

总之,我的目标是如果用户不是来自被推荐的站点并且不存在,则cookieContainer使用字符串进行设置。由于某种原因,它包含一个对象。"67890"$.cookie("code")

请让我知道我是否缺少某些东西,因为我的代码看起来应该可以工作。

谢谢!

4

1 回答 1

0

[Object Object]简而言之,意味着 cookie 中的数据不是字符串,也不完全是。cookie 中的数据可能更类似于 JSON 字符串/对象的数据。并提醒它,将其打印在屏幕上,或者从长远来看,无论您试图做什么,您都必须对对象进行循环并将其全部打印出来..或者如果您知道哪个属性你想要具体,你将不得不具体调用它。

例如:

if(cookieContainer.property_name_whatever)
{
    alert(cookieContainer.property_name_whatever);
}

要找出单个属性,我会说您使用 javascript 最简单的选择是使用 Firefox,安装Firebug http://getfirebug.com/,并在您的代码中而不是alert(cookieContainer)do console.log(cookieContainer)。使用 firebug 启用控制台后,这将读取整个对象并基于每个属性 => 值显示数据。

某些东西不是您要查找的 cookie 时存在的原因是该网站上的人可能来自另一个网站或搜索引擎。在使用document.referrer任何 url 登陆到您的页面时,即使内部结构也可以并且很可能会被视为引荐来源网址,但它最终取决于浏览器本身,尽管所有主要浏览器都支持它,但它们在不同程度上都对其进行了不同的处理。我不会声称完全理解那个特定的对象,因为我自己不经常使用它。但是引用W3

定义和使用

referrer 属性返回加载当前文档的文档的 URL。

提到的 URL 甚至可能是您在同一个站点上通过页面上的链接在页面之间来回跳转(不确定这是否适用于重新加载/刷新,但我想可以)

于 2012-09-28T16:26:56.667 回答