我是jQuery的新手,我正在尝试获取jQuery插件,jquery.cookie.js来编写cookie,然后根据cookie值重定向。以下是我要完成的内容概述:
登陆启动页面后,用户会选择其语言首选项。他们还可以选中“记住我”复选框,该复选框会将Cookie lang-pref
写为值en
或fr
。将来访问时,访问者将被重定向到英语主页或法语主页。
这是我编写cookie的代码:
$(function()
{
$("#en").change(function() //#en is the id of the checkbox
{
if ($(this).is(":checked"))
$.cookie('mem', 'en', { expires: 3652 }); // mem is the cookie name, en is the value
})
});
以下是读取cookie的代码,我有理由相信我搞砸了,因为重定向不起作用。我不知道如何解决它:
$(function() {
if ($.cookie('mem'))
$(location).html ("window.location.href = 'http://www.mysite.com/home-en.php'");
});
我查看了此插件的文档,但我仍然不确定如何使用实际cookie的值来执行操作:例如,on the project's GitHub page给出的示例显示了如何读取cookie ,只需做我在上面的代码中所做的事情。
长话短说,我无法弄清楚如何读取cookie的值,然后使用所述值来执行重定向。
答案 0 :(得分:7)
过度烹饪的简单案例
$(function() {
if ($.cookie('mem')) window.location.href = 'http://www.mysite.com/home-en.php';
});
答案 1 :(得分:2)
Cookie的值由$.cookie('mem')
返回。要考虑英语和法语重定向(或任何未来的语言值),您可以执行以下操作:
$(document).ready(
function() {
var language_preference = $.cookie('mem');
if (language_preference) {
window.location.href = 'http://www.mysite.com/home-'+language_preference+'.php';
}
}
);
但请注意,这种语言检测和重定向通常在服务器端完成。在PHP中,在设置cookie之后,可以在全局变量$_COOKIE
中访问它。请参阅PHP Manual。
例如,不是在另一个页面的JS中进行重定向,而是可以在服务器端使用PHP执行此操作:
if ($_COOKIE['mem']) :
header('Location: http://www.mysite.com/home-'.$_COOKIE['mem'].'.php');
exit;
endif;
这种方法的主要优点是用户只需要一个启动页面即可访问主页,而不是两个。