cookies js - 导航页面的问题

时间:2015-05-19 09:55:15

标签: javascript cookies

我在JS中遇到了一个问题:我有一个有3页的网站,我想为它们创建一个cookie。知道我有:

function createCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    }
    else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}

function getCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

function deleteCookie(name) {
    createCookie(name, "", -1);
}

我希望使用此Cookie更改语言。 (.net中的控制器)

if (getCookie("_culture") == 'de') {
    $('#de_culture').attr("selected", "selected");
}
else if (getCookie("_culture") == 'en') {
    $('#en_culture').attr("selected", "selected");
}
$('#language-form').change(function () {
    var selectedOption = $(this).find("option:selected").text();
    if (selectedOption == 'Deutsch') {

        deleteCookie("_culture");
        createCookie("_culture", "de", 30);
        location.reload(true);
    } else if (selectedOption == 'English') {

        deleteCookie("_culture");
        createCookie("_culture", "en", 30);
        location.reload(true);
    }    
});
使用

在主页上

var list = document.cookie;
console.log(list);

显示:_culture = de 但如果我导航到其他页面,此代码显示:_culture; _culture = DE 并且我的控制器看到cookie为null并且什么都不做;为什么这里有两个饼干?哪个是错误的?

1 个答案:

答案 0 :(得分:0)

您应该将域设置为您的Cookie,以便在所有子域中都可读。

来自MDN

  

域名(可选) -   cookie可读的域。例如,&#34; example.com&#34;,&#34; .example.com&#34; (包括所有子域名)或&#34; subdomain.example.com&#34 ;;如果未指定,则默认为当前文档位置的主机部分(字符串或null)。