获取jquery.cookie.js来读取cookie并重定向

时间:2013-01-05 22:59:02

标签: jquery jquery-cookie

我是jQuery的新手,我正在尝试获取jQuery插件,jquery.cookie.js来编写cookie,然后根据cookie值重定向。以下是我要完成的内容概述:

登陆启动页面后,用户会选择其语言首选项。他们还可以选中“记住我”复选框,该复选框会将Cookie lang-pref写为值enfr。将来访问时,访问者将被重定向到英语主页或法语主页。

这是我编写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的,然后使用所述值来执行重定向。

2 个答案:

答案 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;

这种方法的主要优点是用户只需要一个启动页面即可访问主页,而不是两个。