يقوم jquery بحفظ كائن بيانات json في ملف تعريف الارتباط
-
26-09-2019 - |
سؤال
كيف أحفظ بيانات JSON في ملف تعريف الارتباط؟
تبدو بيانات JSON الخاصة بي هكذا
$("#ArticlesHolder").data('15', {name:'testname', nr:'4',price:'400'});
$("#ArticlesHolder").data('25', {name:'name2', nr:'1', price:'100'});
$("#ArticlesHolder").data('37', {name:'name3', nr:'14', price:'60'});
وأريد أن أفعل شيئًا مثل
var dataStore = $.cookie("basket-data", $("#ArticlesHolder").data());
ولاسترداد البيانات التي أريد تحميلها فيها $("#ArticlesHolder")
يحب
$.each($.cookie("basket-data"), function(i,e){
$("#ArticlesHolder").data(i, e);
});
هل يعرف أحد ما إذا كنت على الطريق الصحيح أم أنه يجب القيام بذلك بطريقة أخرى؟ببساطة، كيف يمكنني وضع وسحب بيانات json من ملف تعريف الارتباط؟
المحلول
يمكنك تسلسل البيانات كـ JSON ، مثل هذا:
$.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));
ثم للحصول عليه من ملف تعريف الارتباط:
$("#ArticlesHolder").data(JSON.parse($.cookie("basket-data")));
هذا يعتمد على JSON.stringify()
و JSON.parse()
لتسلسل/تخلص من كائن البيانات الخاص بك ، للمتصفحات القديمة (أي <8) تشمل JSON2.JS للحصول على JSON
وظائف. يستخدم هذا المثال jQuery Cookie Plugin
نصائح أخرى
الآن لا توجد حاجة بالفعل للاستخدام JSON.stringify
صراحة. فقط قم بتنفيذ هذا السطر من الكود
$.cookie.json = true;
بعد ذلك ، يمكنك حفظ أي كائن في ملف تعريف الارتباط ، والذي سيتم تحويله تلقائيًا إلى JSON والعودة من JSON عند قراءة ملف تعريف الارتباط.
var user = { name: "name", age: 25 }
$.cookie('user', user);
...
var currentUser = $.cookie('user');
alert('User name is ' + currentUser.name);
لكن مكتبة JSON لا تأتي مع jQuery.cookie ، لذلك عليك تنزيلها بنفسك وتضمينها في صفحة HTML من قبل jquery.cookie.js
استعمال JSON.stringify(userData)
لتغطية كائن JSON إلى سلسلة.
var dataStore = $.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));
ولعودة استخدام ملفات تعريف الارتباط JSON.parse()
var data=JSON.parse($.cookie("basket-data"))
إنها ليست ممارسة جيدة لتوفير القيمة التي يتم إرجاعها JSON.stringify(userData)
إلى ملف تعريف الارتباط يمكن أن يؤدي إلى خطأ في بعض المتصفحات.
قبل استخدامه ، يجب عليك تحويله إلى BASE64 (استخدام btoa
) ، وعند قراءته ، قم بتحويل من BASE64 (استخدام atob
).
val = JSON.stringify(userData)
val = btoa(val)
write_cookie(val)
مع تسلسل البيانات كـ JSON و BASE64 ، jquery.cokie.js التبعية:
var putCookieObj = function(key, value) {
$.cookie(key, btoa(JSON.stringify(value)));
}
var getCookieObj = function (key) {
var cookie = $.cookie(key);
if (typeof cookie === "undefined") return null;
return JSON.parse(atob(cookie));
}
:)
جرب هذه:https://github.com/tantau-horia/jquery-SuperCookie
الاستخدام السريع:
إنشاء - إنشاء ملف تعريف الارتباط
تحقق - التحقق من الوجود
التحقق - التحقق من قيمة ملف تعريف الارتباط إذا كان JSON
check_index - تحقق من وجود الفهرس في JSON
read_values - قراءة قيمة ملف تعريف الارتباط كسلسلة
read_JSON - قراءة قيمة ملف تعريف الارتباط ككائن JSON
read_value - قيمة قراءة الفهرس المخزن في كائن JSON
استبدال_القيمة - استبدال القيمة من فهرس محدد مخزن في كائن JSON
Remove_value - إزالة القيمة والفهرس المخزن في كائن JSON
مجرد استخدام:
$.super_cookie().create("name_of_the_cookie",name_field_1:"value1",name_field_2:"value2"});
$.super_cookie().read_json("name_of_the_cookie");