2011-05-31 73 views
3


我有一個多語種網站,可以在德語和英語之間切換。我希望將所選語言存儲在cookie中,以便訪問者下次訪問該網站時不必一次又一次地將其切換爲他的首選語言。不幸的是,我有一個奇怪的行爲。它看起來像這樣:設置Cookie導致意外行爲

我有一個鏈接切換語言(onclick)。這個功能看起來是這樣的:

function storeLanguage(lang) { 
    /*deletes the cookie? */ 
    document.cookie = "MYCOOKIE=; expires=Thu, 01-Jan-70 00:00:01 GMT;"; 
    var ablauf = new Date(); 
    var expTime = ablauf.getTime() + (60 * 24 * 60 * 60 * 1000); //Cookie for 60 days 
    ablauf.setTime(expTime); 

    if (lang == 'en') { 
      document.cookie = "MYCOOKIE=EN; expires=" + ablauf.toGMTString() + ";"; 
    } 
    else { 
     document.cookie = "MYCOOKIE=DE; expires=" + ablauf.toGMTString() + ";"; 
    } 
} 

螢火蟲說,它一躍而起的權利,如果分支,所以當我點擊「德國」,這部分將被執行「的myCookie = DE」,否則英國的分支。這看起來不錯。但是,當我去我的網站的任何網頁(用於測試,我選擇了指數的網站),並執行

alert(document.cookie); 

我suddendly得到的結果在德國的網頁「的myCookie = EN」,儘管它應該是「MYCOOKIE = DE」,因爲函數跳轉到右邊的IF分支(else分支)。當我切換到英語時,我在英文網頁上獲得「MYCOOKIE = DE; MYCOOKIE = EN」的結果。所以突然有兩個同名的餅乾。所以cookie的價值不只是倒過來,而不是正確刪除,但完全廢話。任何人都可以解釋導致這種行爲的代碼中有什麼問題嗎?

回答

1

確保您也正確設置了Cookie的路徑。例如,如果您網站的語言嵌入在URL中(IE:http://yoursite.com/en/index.html),則可能會將Cookie設置爲僅在路徑中包含「/ en」時纔有效。完整的cookie設置語法如下所示:

document.cookie = 'mycookie=somevalue; expires=Thu, 2 Aug 2001 20:47:11 UTC; path=/' 
+0

非常感謝。你是對的。解決了它:) – Bevor 2011-05-31 19:57:22

+0

太棒了!我認爲這可能是問題 – nikmd23 2011-06-01 17:57:37

相關問題