我在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并且什么都不做;为什么这里有两个饼干?哪个是错误的?
答案 0 :(得分:0)
您应该将域设置为您的Cookie,以便在所有子域中都可读。
来自MDN
域名(可选) - cookie可读的域。例如,&#34; example.com&#34;,&#34; .example.com&#34; (包括所有子域名)或&#34; subdomain.example.com&#34 ;;如果未指定,则默认为当前文档位置的主机部分(字符串或null)。