
var d = new Date();
$.jCookies({
name: ‘dotnettips.info’,
value: { Title: ‘ساخت کوکی با jcookie’, Author: ‘علی یگانه مقدم’, Seen: d.getDate(), Favorite: true }
});
همانطور که میبینید ذخیره اطلاعات توسط jcookie بسیار ساده و راحت بوده و هر نوع داده ای در آن به راحتی قابل ذخیره سازیست. برای مثال میتوانید اطلاعات یک کلاس را خیلی راحت و سریع با آن ذخیره کنید. به طور پیش فرض تاریخ انقضای کوکی ۲۷ روز بعد از ایجاد آن میباشد. در صورتی که تمایل دارید این تاریخ را تغییر دهید یکی از خاصیتهای seconds,minutes,hours و days در دسترس شماست و مقادیری که جلوی آنها به کارگرفته میشود باید نوع صحیح بوده و در صورتی که مقدار نامعتبر وارد شود خاصیت مورد نظر نادیده گرفته میشود.
$.jCookies ({ name : ‘User’, value : { username : ‘Bob’ , level : 5 }, minutes : 60 });
برای تغییر پیش فرضهای ساخت کوکی مانند انقضای ۲۷ روز به عدد پیش فرض خودتان فایل jcookies.js را باز کرده و تنظیمات پیش فرض آن را تغییر بدهید. برای تغییر دنبال کد زیر بگردید:
$.jCookies.defaults =
{
name : ”,
value : ”,
days : 27
}
Error : {
arguments : undefined,
message : “Invalid base64 data”,
stack : “—”,
type : undefined
}
بازیابی همه کوکی ها
var values = $.jCookies({ get: ‘*’ });
alert(values[“dotnettips.info”].Title);
alert(values[“data2”].Title);
- برگشت دادهها از حالت رمزگذاری base64
- دادهها در فرمت json هستند و باید به حالتی قابل استفاده در محیط شی گرا تبدیل شوند.
Title | ایجاد کوکی با jcookie |
Author | علی یگانه مقدم |
Seen | 2015/1/14 |
Favorite | true |
byte[] from64 = Convert.FromBase64String(Page.Request.Cookies[“dotnettips.info”].Value);
string json = Encoding.UTF8.GetString(from64);
Dictionary<string, object> article =new JavaScriptSerializer().Deserialize<Dictionary<string, object>>(json);
Page.Response.Write(“Title: “+ (string)article[“Title”]);
پشتیبانی از یونیکد
موقعی که من اولین مثال بالا را نوشتم و مقادیر را به صورت فارسی وارد کردم متوجه شدم که رشتههای یونیکد را انکود نمیکند و در نتیجه زبان فارسی در آن پشتیبانی نمیشود. برای همین تغییراتی در فایل js ایجاد کرده و عبارت value قبل از تبدیل به base64 را به صورت utf-16 انکود کردم و در هنگام خواندن کوکی هم به صورت utf-16 دیکود کردم و مشکل زبان فارسی هم در این حالت حل شد. البته کدی که اضافه کردم قابلیتهای انکودینگ بیشتری هم دارد.
فقط تنها مورد این هست که برای خواندن کوکی در سمت سرور باید یک تغییر کوچک یک کلمه ای بدهیم؛ باید کلمه UTF8 را به Unicode که میشود همان UTF-16 در کد تغییر دهیم، که به کد زیر تغییر خواهد یافت:
byte[] from64 = Convert.FromBase64String(Page.Request.Cookies[“dotnettips.info”].Value);
string json = Encoding.Unicode.GetString(from64);
Dictionary<string, object> article =new JavaScriptSerializer().Deserialize<Dictionary<string, object>>(json);
Page.Response.Write(“Title: “+ (string)article[“Title”]);