我正在尝试使用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")
不存在。由于某种原因,它包含一个对象。
请告诉我是否有遗漏的内容因为我的代码看起来应该有用。
谢谢!
答案 0 :(得分:0)
[Object Object]
简而言之,cookie中的数据不是字符串,也不完全是。机会是cookie中的数据更像是JSON字符串/对象的数据。并提醒它,将它打印在屏幕上,或者你想要做的任何事情,从长远来看,你必须在对象上做一个循环并让它打印出来......或者如果你知道哪个属性你需要具体的,你必须专门调用它。
例如:
if(cookieContainer.property_name_whatever)
{
alert(cookieContainer.property_name_whatever);
}
要找出各个属性,我会说使用Firefox最简单的赌注是使用Firefox,安装Firebug
http://getfirebug.com/,并在代码而不是alert(cookieContainer)
执行{{1} }。使用firebug启用控制台后,这将读取整个对象并在每个属性上显示数据=>价值基础。
当你找不到的cookie时,某些东西存在的原因是网站上的人可能来自另一个网站或搜索引擎。在使用console.log(cookieContainer)
任何网址着陆到您的网页时,即使内部也可能并且可能会被视为引荐来源,但它最终依赖于浏览器本身,因为所有主要支持它,它们都在不同程度上对待它。我不打算完全理解那个特定的对象,因为我自己经常不使用它。但要引用W3
定义和用法
referrer属性返回加载文档的URL 当前文件。
提到的网址甚至可能是您在同一网站上通过页面上的链接在页面之间来回跳转(不确定这是否适用于重新加载/刷新,但我可以认为)