ホームページ > 記事 > ウェブフロントエンド > JavaScriptのCookieとは何ですか? Document.Cookieの使い方の詳しい説明
具体的には、Cookie メカニズムはクライアント側で状態を維持するソリューションを使用し、セッション メカニズムはサーバー側で状態を維持するソリューションを使用します。
同時に、サーバー側で状態を維持するソリューションではクライアント側でも ID を保存する必要があるため、保存の目的を達成するためにセッション メカニズムで Cookie メカニズムを使用する必要があることもわかります。アイデンティティですが、実際には別の選択があります。
Cookie を設定する
各 Cookie は名前と値のペアです。次の文字列を document.cookie に割り当てることができます:
document.cookie="userId=828";
複数の名前と値のペアを一度に保存したい場合は、次のようにすることができます。セミコロンとスペース (;) を使用してそれらを区切ります。例:
document.cookie="userId=828; userName=hulk";
Cookie の名前または値にはセミコロン (;)、コンマ (,)、等号 (=)、およびスペースを使用できません。これを Cookie の名前で行うのは簡単ですが、保存される値は未定義です。これらの値を保存するにはどうすればよいでしょうか?この方法では、escape() 関数を使用してエンコードします。これにより、一部の特殊な記号を 16 進表現で使用できます。たとえば、スペースは「20%」としてエンコードされ、Cookie 値に保存できます。中国語の文字化けの発生も回避します。例:
document.cookie="str="+escape("I love ajax");
同等:
document.cookie="str=I%20love%20ajax";
scape() エンコードを使用する場合、値を取り出した後、unescape() を使用してデコードして元の Cookie 値を取得する必要があります。これについては以前に紹介しました。
document.cookie はプロパティのように見えますが、異なる値を割り当てることができます。ただし、一般的な属性とは異なり、割り当てを変更しても元の値が失われるわけではありません。たとえば、次の 2 つのステートメントを連続して実行すると、ブラウザは userId と userName という 2 つの Cookie を保持します。 document.cookie への値は、次のようなステートメントを実行することに似ています:
document.cookie="userId=828"; document.cookie="userName=hulk";
実際、ブラウザは Cookie の値を次のように設定します。Cookie の値を変更したい場合は、それを再割り当てするだけです。
document.addCookie("userId=828"); document.addCookie("userName=hulk");
この方法 userId という名前の Cookie の値を 929 に設定するだけです。
Cookie の値を取得する
Cookie の値を取得する方法は次のとおりです。 Cookie の値は、document.cookie から直接取得できます:
document.cookie="userId=929";
これにより、セミコロンで区切られた複数の名前と値のペアで構成される文字列が取得されます。これらの名前と値のペアには、ドメイン名の下にあるすべての Cookie が含まれます。例:
var strCookie=document.cookie;
は出力 Cookie 値を示します。すべての Cookie 値を一度に取得することしかできないことがわかりますが、指定した値を取得するために Cookie 名を指定することはできません。これが Cookie 値の処理で最も面倒な部分です。指定された Cookie 値を取得するには、ユーザーが自分でこの文字列を分析する必要があります。たとえば、userId の値を取得するには、次のようにします。
この方法で、単一の Cookie の値を取得できます。 1 つまたは複数の Cookie の主なテクニックは、やはり文字列と配列の関連操作です。
Cookie の有効期限を設定します
これまで、すべての Cookie はシングルセッション Cookie でした。つまり、これらの Cookie はブラウザを閉じると失われます。実際、これらの Cookie はメモリにのみ保存されます。対応するハードディスクファイルは作成されません。
実際の開発では、ユーザーのログイン状態の保存など、Cookieを長期間保存する必要があることがよくあります。これは、次のオプションを使用して実現できます:
ここで、GMT_String は GMT 形式で表される時刻文字列です。このステートメントは、userId Cookie を GMT_String で表される有効期限に設定します。この時間が経過すると、Cookie は消えてアクセスできなくなります。例: Cookie の有効期限が 10 日後に切れるように設定したい場合は、次のように設定できます:
document.cookie="userId=828; expires=GMT_String";
ps: Jquery Cookie の操作パラメータ: セッション Cookie を作成します:
<script language="JavaScript" type="text/javascript"> <!-- //获取当前时间 var date=new Date(); var expireDays=10; //将date设置为10天以后的时间 date.setTime(date.getTime()+expireDays*24*3600*1000); //将userId和userName两个cookie设置为10天后过期 document.cookie="userId=828; userName=hulk; expire="+date.toGMTString(); //--> </script> 删除cookie 为了删除一个cookie,可以将其过期时间设定为一个过去的时间,例如: <script language="JavaScript" type="text/javascript"> <!-- //获取当前时间 var date=new Date(); //将date设置为过去的时间 date.setTime(date.getTime()-10000); //将userId这个cookie删除 document.cookie="userId=828; expire="+date.toGMTString(); //--> </script>
注: Cookie の時刻が指定されていない場合、作成された Cookie はデフォルトでユーザーのブラウザが閉じるまで有効であるため、セッション Cookie と呼ばれます。
永続的な Cookie を作成します:
<script language="JavaScript" type="text/javascript"> <!-- //获取当前时间 var date=new Date(); var expireDays=10; //将date设置为10天以后的时间 date.setTime(date.getTime()+expireDays*24*3600*1000); //将userId和userName两个cookie设置为10天后过期 document.cookie="userId=828; userName=hulk; expire="+date.toGMTString(); //--> </script> 删除cookie 为了删除一个cookie,可以将其过期时间设定为一个过去的时间,例如: <script language="JavaScript" type="text/javascript"> <!-- //获取当前时间 var date=new Date(); //将date设置为过去的时间 date.setTime(date.getTime()-10000); //将userId这个cookie删除 document.cookie="userId=828; expire="+date.toGMTString(); //--> </script>
注: 時間が指定されている場合、それは永続的な Cookie と呼ばれ、有効期間は日です。
有効なパスを使用して永続的な Cookie を作成します:
$.cookie(‘cookieName','cookieValue',{expires:7});
注: 有効なパスが設定されていない場合、デフォルトでは、Cookie は Cookie 設定の現在のページでのみ読み取ることができます。 Cookie の最上位ディレクトリを読み取る機能を設定します。
有効なパスとドメイン名を使用して永続的な Cookie を作成します:
$.cookie(‘cookieName','cookieValue',{expires:7,path:'/'});
注: ドメイン: Cookie が作成される Web ページが所有するドメイン名、セキュア: デフォルトは false、true の場合は Cookie 送信プロトコルhttps である必要があります; raw : デフォルトは false です。読み取りおよび書き込み時に自動的にエンコードおよびデコードします (エンコードには encodeURIComponent を使用し、デコードには decodeURIComponent を使用します)。
クッキーを入手:
$.cookie(‘cookieName'); //如果存在则返回cookieValue,否则返回null。
删除cookie:
$.cookie(‘cookieName',null);
注:如果想删除一个带有效路径的cookie,如下:$.cookie(‘cookieName',null,{path:'/'});
以上がJavaScriptのCookieとは何ですか? Document.Cookieの使い方の詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。