2013-01-31 61 views
0

所以我创造了这个新的线程这一个,因为它是如此糟糕解释,但被告知编辑这一个:获取第一次加载的cookie

新文本

我需要接受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; 
} 

现在你可以看到我设置函数内部笔者价值,所以我应该是能够console.log出作者的价值并获得正确的v Alue:

console.log(author) 

我什么也没有返回,这是我现在卡住的地方。我想这是因为setAutorCookie如何在我console.log(author)后运行,但我希望有人能帮助我,这是因为authorsetAuthorCookie的局部变量吗?

经过一些测试后,我可以看到setAuthorCookie在最后一个console.log()之后运行,这就是为什么它是空的,但有人可以帮我改变这种情况吗?

+0

'setAuthorCookie'叫什么?据我所知,它从未被使用过。我不会在这样的函数范围之外改变变量,这肯定会造成一些混淆。 –

回答

2

你只是在一定条件下返回从getCookie()东西!

if (x==cookie) 
    { 
    return unescape(y); 
    } 

所以,如果x =饼干,你的函数没有返回。因此,当你说var author = getCookie('partnerOptimizerId');,但getCookie()不返回任何内容时,author将是未定义的。

+0

好吧,但是如果我这样做'// var author = getCookie('partnerOptimizerId');'那么我应该在'setAuthorCookie()'函数中设置作者,对吧?但是,console.log只输出一个空字符串。 –