1

私はjQueryにまったく慣れていないので、jQueryプラグインjquery.cookie.jsを取得してCookieを作成し、Cookieの値に基づいてリダイレクトしようとしています。これが私が達成しようとしていることの概要です:

スプラッシュページにアクセスすると、ユーザーは言語設定を選択します。また、「remember me」チェックボックスをオンにすることもできます。このチェックボックスは、またはのいずれかの値で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
    })
});

そして、これがクッキーを読み取るためのコードです。リダイレクトが機能しないので、私はそれを台無しにしたと合理的に確信しています。ただし、修正方法がわかりません。

$(function() {
    if ($.cookie('mem'))
    $(location).html ("window.location.href = 'http://www.mysite.com/home-en.php'");
});

このプラグインのドキュメントを調べましたが、実際のCookieの値を使用してアクションを実行する方法がまだわかりません。たとえば、プロジェクトのGitHubページに示されている例は、Cookieを読み取る方法を示しています。上記のコードで行ったことを実行します。

簡単に言うと、Cookieのを読み取って、その値を使用してリダイレクトを実行する方法がわかりません。

4

2 に答える 2

7

過熱の単純なケース

$(function() {
    if ($.cookie('mem')) window.location.href = 'http://www.mysite.com/home-en.php';
});
于 2013-01-05T23:02:14.097 に答える
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が設定された後、グローバル変数でアクセスできます$_COOKIEPHPマニュアルのドキュメントを参照してください。

たとえば、別のページのJSでリダイレクトを行う代わりに、PHPを使用してサーバー側でこれを行うことができます。

if ($_COOKIE['mem']) :
    header('Location: http://www.mysite.com/home-'.$_COOKIE['mem'].'.php');
    exit;
endif;

このアプローチの主な利点は、ユーザーが2つではなく1つのスプラッシュページだけを通過してホームページにアクセスできることです。

于 2013-01-05T23:19:34.737 に答える