2013-01-31 62 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只輸出一個空字符串。 –