所以我为这个创建了这个新线程,因为它解释得很糟糕,但被告知编辑这个:
新文字
我需要从外部网站接收user_id。如果用户从站点B到站点A,我只需要收到此信息。所以当他这样做时,我将该user_id保存在cookie中,该部分工作正常。但是当我第一次登陆页面时,我还需要获得cookie的价值,所以让我试着解释一下我是如何做到的:
首先,我看看用户是否来自其他域名:
var ownDomain = location.hostname,
referrerDomain = document.referrer.split('/')[2],
author = '';
if ( ownDomain != referrerDomain) {
var script = document.createElement('script');
script.src = '//javascript.mamp/json/?callback=setAuthorCookie';
document.getElementsByTagName('head')[0].appendChild(script);
}
如果他这样做,那么我们插入一个调用回调setAuthorCookie()
的javascript,如下所示:
function setAuthorCookie( data ) {
var exdate = new Date(),
exdays = 1,
value = data['userId'],
cookie = 'partnerOptimizerId',
exdate = new Date();
author = value;
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=cookie + "=" + c_value;
}
现在您可以看到我在该函数中设置了author值,因此我应该能够在console.log中输出author的值并获取正确的值:
console.log( author )
我什么也没有回来,这就是我现在卡住的地方。我想这是因为我setAutorCookie
之后运行console.log( author )
的方式,但我希望有人可以帮助我,是因为author
是setAuthorCookie
中的局部变量}?
经过一些测试后,我可以看到setAuthorCookie在最后一个console.log()之后运行,这就是为什么它是空的但是有人可以帮我改变它吗?
答案 0 :(得分:2)
你只是在某些条件下从getCookie()
返回一些东西:
if (x==cookie)
{
return unescape(y);
}
因此,如果x!= cookie,您的函数没有返回。因此,当您说var author = getCookie( 'partnerOptimizerId' );
,但getCookie()
没有返回任何内容时,author
将被取消定义。