يقوم jquery بحفظ كائن بيانات json في ملف تعريف الارتباط

StackOverflow https://stackoverflow.com/questions/4225030

  •  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");
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top