ホームページ >ウェブフロントエンド >jsチュートリアル >Document.Cookie_javascript テクニックの詳細な説明
具体的には、Cookie メカニズムはクライアント側で状態を維持するソリューションを使用し、セッション メカニズムはサーバー側で状態を維持するソリューションを使用します。
同時に、サーバー側で状態を維持するソリューションではクライアント側でも ID を保存する必要があるため、セッション メカニズムは、ID を保存するという目的を達成するために Cookie メカニズムを使用する必要がある可能性があることもわかります。アイデンティティですが、実際には他のオプションもあります。
Cookie を設定
各 Cookie は名前と値のペアです。次の文字列を document.cookie に割り当てることができます。
document.cookie="userId=828";
document.cookie="userId=828; userName=hulk";
document.cookie="str="+escape("I love ajax");
document.cookie="str=I%20love%20ajax";
document.cookie="userId=828"; document.cookie="userName=hulk";現時点では、ブラウザーは userId と userName という 2 つの Cookie を維持するため、document.cookie に値を割り当てることは、次のようなステートメントを実行することに似ています:
document.addCookie("userId=828"); document.addCookie("userName=hulk");実際、ブラウザは次のように Cookie を設定します。Cookie の値を変更したい場合は、次のように再割り当てするだけです。
document.cookie="userId=929";
Cookie の値を取得する方法は次のとおりです。 Cookie の値は、document.cookie から直接取得できます:
var strCookie=document.cookie;
<script language="JavaScript" type="text/javascript"> <!-- document.cookie="userId=828"; document.cookie="userName=hulk"; var strCookie=document.cookie; alert(strCookie); //--> </script>図 7.1 は、出力された Cookie の値を示しています。すべての Cookie 値を一度に取得することしかできないことがわかりますが、指定した値を取得するために Cookie 名を指定することはできません。これが Cookie 値の処理で最も面倒な部分です。ユーザーはこの文字列を自分で分析して、指定された Cookie 値を取得する必要があります。たとえば、userId の値を取得するには、次のようにします。
この方法では、1 つの Cookie の値を取得できます。同様の方法を使用して、1 つ以上の Cookie の値を取得できます。主な手法はやはり文字列と配列の関連操作です。
<script language="JavaScript" type="text/javascript"> <!-- //设置两个cookie document.cookie="userId=828"; document.cookie="userName=hulk"; //获取cookie字符串 var strCookie=document.cookie; //将多cookie切割为多个名/值对 var arrCookie=strCookie.split("; "); var userId; //遍历cookie数组,处理每个cookie对 for(var i=0;i<arrCookie.length;i++){ var arr=arrCookie[i].split("="); //找到名称为userId的cookie,并返回它的值 if("userId"==arr[0]){ userId=arr[1]; break; } } alert(userId); //--> </script>
Cookie の有効期限を設定します
これまでのところ、すべての Cookie はシングルセッション Cookie です。つまり、これらの Cookie はブラウザを閉じると失われます。実際、これらの Cookie は対応するハードディスク ファイルを作成せずにメモリに保存されるだけです。
document.cookie="userId=828; expires=GMT_String";
<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>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(‘cookieName','cookieValue',{expires:7});
注:如果不设置有效路径,在默认情况下,只能在cookie设置当前页面读取该cookie,cookie的路径用于设置能够读取cookie的顶级目录。
创建一个持久并带有效路径和域名的cookie:
$.cookie(‘cookieName','cookieValue',{expires:7,path:'/',domain: ‘chuhoo.com',secure: false,raw:false});
注:domain: 创建cookie所在网页所拥有的域名;secure:默认是false,如果为true,cookie的传输协议需为https;raw:默认为 false,读取和写入时候自动进行编码和解码(使用encodeURIComponent编码,使用decodeURIComponent解码),关闭 这个功能,请设置为true。
获取cookie:
$.cookie(‘cookieName'); //如果存在则返回cookieValue,否则返回null。
删除cookie:
$.cookie(‘cookieName',null);
注:如果想删除一个带有效路径的cookie,如下:$.cookie(‘cookieName',null,{path:'/'});