Rumah > Artikel > hujung hadapan web > Penjelasan terperinci tentang teknik Document.Cookie_javascript
Secara khusus, mekanisme kuki menggunakan penyelesaian yang mengekalkan keadaan pada bahagian klien, manakala mekanisme sesi menggunakan penyelesaian yang mengekalkan keadaan pada bahagian pelayan.
Pada masa yang sama, kami juga melihat bahawa oleh kerana penyelesaian mengekalkan keadaan pada bahagian pelayan juga perlu menyimpan identiti pada bahagian klien, mekanisme sesi mungkin perlu menggunakan mekanisme kuki untuk mencapai tujuan menyimpan identiti, tetapi sebenarnya ia mempunyai pilihan lain.
Tetapkan kuki
Setiap kuki ialah pasangan nama/nilai Anda boleh menetapkan rentetan berikut kepada document.cookie:
document.cookie="userId=828";
Jika anda ingin menyimpan berbilang pasangan nama/nilai pada satu masa, anda boleh menggunakan koma bertitik dan ruang (; ) untuk memisahkannya, contohnya:
document.cookie="userId=828; userName=hulk";
Titik koma (;), koma (,), tanda sama (=) dan ruang tidak boleh digunakan dalam nama atau nilai kuki. Mudah untuk melakukan ini atas nama kuki, tetapi nilai untuk disimpan tidak ditentukan. Bagaimana untuk menyimpan nilai ini? Kaedahnya ialah menggunakan fungsi escape() untuk mengekod, yang boleh menggunakan perwakilan perenambelasan beberapa simbol khas Contohnya, ruang akan dikodkan sebagai "20%", yang boleh disimpan dalam nilai kuki, dan menggunakan penyelesaian ini boleh. juga mengelakkan Kemunculan watak-watak Cina yang kacau-bilau. Contohnya:
document.cookie="str="+escape("I love ajax");
Bersamaan dengan:
document.cookie="str=I%20love%20ajax";
Apabila menggunakan pengekodan escape(), anda perlu menggunakan unescape() untuk menyahkod selepas mengeluarkan nilai untuk mendapatkan nilai kuki asal, yang telah diperkenalkan sebelum ini.
Walaupun document.cookie kelihatan seperti harta, ia boleh diberikan nilai yang berbeza. Tetapi ia berbeza daripada atribut umum Mengubah tugasannya tidak bermakna kehilangan nilai asal Contohnya, melaksanakan dua pernyataan berikut secara berterusan:
document.cookie="userId=828"; document.cookie="userName=hulk";
Pada masa ini, penyemak imbas akan mengekalkan dua kuki, iaitu userId dan userName, jadi memberikan nilai kepada document.cookie lebih seperti melaksanakan pernyataan seperti ini:
document.addCookie("userId=828"); document.addCookie("userName=hulk");
Sebenarnya, penyemak imbas menetapkan kuki dengan cara ini Jika anda ingin menukar nilai kuki, anda hanya perlu menetapkannya semula, contohnya:
document.cookie="userId=929";
Ini menetapkan nilai kuki bernama userId kepada 929.
Dapatkan nilai kuki
Inilah cara untuk mendapatkan nilai kuki. Nilai kuki boleh diperolehi terus daripada document.cookie:
var strCookie=document.cookie;
Ini akan mendapat rentetan yang terdiri daripada berbilang pasangan nama/nilai yang dipisahkan oleh koma bernoktah ini termasuk semua kuki di bawah nama domain. Contohnya:
<script language="JavaScript" type="text/javascript"> <!-- document.cookie="userId=828"; document.cookie="userName=hulk"; var strCookie=document.cookie; alert(strCookie); //--> </script>
Rajah 7.1 menunjukkan nilai kuki keluaran. Ia boleh dilihat bahawa anda hanya boleh mendapatkan semua nilai kuki sekaligus, tetapi anda tidak boleh menentukan nama kuki untuk mendapatkan nilai yang ditentukan Ini adalah bahagian yang paling menyusahkan dalam memproses nilai kuki. Pengguna mesti menganalisis rentetan ini sendiri untuk mendapatkan nilai kuki yang ditentukan Contohnya, untuk mendapatkan nilai userId, anda boleh melakukan ini:
<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>
Dengan cara ini anda mendapat nilai kuki tunggal Menggunakan kaedah yang serupa, anda boleh mendapatkan nilai satu atau lebih kuki Teknik utama masih merupakan operasi rentetan dan tatasusunan.
Tetapkan tarikh tamat tempoh untuk kuki
Setakat ini, semua kuki adalah kuki sesi tunggal, iaitu kuki ini akan hilang selepas penyemak imbas ditutup Sebenarnya, kuki ini hanya disimpan dalam memori tanpa mencipta fail cakera keras yang sepadan.
Dalam pembangunan sebenar, kuki selalunya perlu disimpan untuk masa yang lama, seperti menyimpan status log masuk pengguna. Ini boleh dicapai menggunakan pilihan berikut:
document.cookie="userId=828; expires=GMT_String";
Di mana GMT_String ialah rentetan masa yang dinyatakan dalam format GMT ini menetapkan kuki userId kepada masa tamat yang diwakili oleh GMT_String Selepas masa ini, kuki akan hilang dan tidak boleh diakses. Contohnya: Jika anda ingin menetapkan kuki untuk tamat tempoh selepas 10 hari, anda boleh melakukannya seperti ini:
<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: Parameter pengendalian Kuki Jquery:
Buat kuki sesi:
<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>
Nota: Apabila masa kuki tidak ditentukan, kuki yang dibuat akan sah sehingga penyemak imbas pengguna ditutup secara lalai, jadi ia dipanggil kuki sesi.
Buat kuki yang berterusan:
$.cookie(‘cookieName','cookieValue',{expires:7});
Nota: Apabila masa ditentukan, ia dipanggil kuki berterusan, dan masa sah ialah hari.
Buat kuki berterusan dengan laluan yang sah:
$.cookie(‘cookieName','cookieValue',{expires:7,path:'/'});
注:如果不设置有效路径,在默认情况下,只能在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:'/'});