কুকিতে jquery সেভ জসন ডেটা অবজেক্ট


108

আমি কীভাবে কোনও কুকিতে 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);
});

কেউ কি জানেন যে আমি সঠিক পথে রয়েছি বা এটি অন্য কোনও উপায়ে করা উচিত? সোজা কথায়, কীভাবে আমি কোনও কুকি থেকে জসন ডেটা রাখি এবং টানবো?


8
কেবল প্যাডেন্টিক হচ্ছে, তবে আপনার প্রশ্নের কোনও "জেএসএন ডেটা" নেই। আপনার কাছে কিছু জাভাস্ক্রিপ্ট অবজেক্ট রয়েছে যা আপনি অবজেক্ট আক্ষরিক স্বরলিপিটির মাধ্যমে সংজ্ঞায়িত করেছেন (জেএসএন নয়, জেএসওএন বস্তুর আক্ষরিক স্বরলিপিটির একটি উপসেট), তবে সেখানে কোনও জেএসএন নেই। json.org আপনি অবশ্যই অবশ্যই কুকি স্ট্রিংয়ে আপনার অবজেক্টগুলি সংরক্ষণের জন্য ডেটা ফর্ম্যাট হিসাবে JSON ব্যবহার করতে চান ।
টিজে ক্রাউডার

উত্তর:


195

আপনি JSON হিসাবে এই জাতীয় ডেটা সিরিয়ালাইজ করতে পারেন:

$.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));

তারপরে এটি কুকি থেকে পেতে:

$("#ArticlesHolder").data(JSON.parse($.cookie("basket-data")));

পুরানো ব্রাউজারগুলির জন্য (IE <8) কার্যকারিতা পেতে json2.js অন্তর্ভুক্ত করার জন্য এটি আপনার ডেটা অবজেক্টটি সিরিয়ালাইজ / ডিসায়রিয়াল করতে নির্ভর করে JSON.stringify()and JSON.parse()এই উদাহরণটি jQuery কুকি প্লাগইন ব্যবহার করেJSON


2
প্রাচীন কাল থেকে আমার অপেরার জন্য কুকিগুলিতে জেএসওন অনুমোদিত নয় my.opera.com/commune/forums/… আমারও এই ত্রুটি রয়েছে। যদিও @ কুকি @ প্লাগইন @ এনকোডিউআরআইকিউম্পোনেন্ট @ ব্যবহার করে, পিবগটি উপস্থিত হওয়া উচিত নয়।
কিরিলয়েড

1
এই প্রশ্নোত্তর আমাকে বিশ্বাস করতে পরিচালিত করেছে যে cookiejQuery এ একটি অন্তর্নির্মিত ফাংশন। এটি প্রদর্শিত হবে না। নাকি অবহেলিত ..? এটি যদি আমার খুঁজে পাওয়া প্লাগইন হয় তবে এর সাথে সংযোগ স্থাপন করা বিভ্রান্তি এড়াতে দুর্দান্ত হবে ...
টিজে

1
@ টিজে এটি প্রকৃতপক্ষে একটি প্লাগইন, jQuery কুকি প্লাগইন। আপনি এটি এখানে খুঁজে পেতে পারেন: plugins.jquery.com / কুকি আমি সত্যিই ভাবছি কেন এটি এই মুহুর্তে মূল কারণ নয় ...
নিক ক্র্যাভার

কিছু ব্রাউজারে এটি ব্যবহারে সতর্কতা অবলম্বন করুন। ,(কমা) চরিত্র না করতে কুকি সঠিকভাবে সাফারি এবং অন্যান্য ব্রাউজারের মাধ্যমে নির্ধারণ করা হতে পারে।
ম্যাট সিমুর

আপনি jQuery না চাইলে এই দুর্দান্ত লাইটওয়েট কুকি গ্রন্থাগারটিও ব্যবহার করতে পারেন। [ বিকাশকারী.মোজিলা.আর.ইন-
ইউএস

40

এখনই 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);

তবে জেএসএন লাইব্রেরি jquery.cookie এর সাথে আসে না, সুতরাং আপনার নিজের দ্বারা এটি ডাউনলোড করতে হবে এবং jquery.cookie.js এর আগে এইচটিএমএল পৃষ্ঠাতে অন্তর্ভুক্ত করতে হবে have


3
আমি এই পদ্ধতির চেষ্টা without .cookie.json = সত্য না করে করেছি এবং [অবজেক্ট অবজেক্ট] আমার কুকির মান হিসাবে পেয়েছি। তারপরে এটি সত্য হিসাবে সেট করুন এবং অবজেক্টটি সরাসরি কুকির কাছে পৌঁছে দেওয়ার চেষ্টা করলেন এবং কোনও কুকি পপুলেশন হয়নি।
জ্যাকব্রোসদেভ

@ জ্যাকোব্রস ৮৮৮ আমি মনে করি যে আমাদের মধ্যে কেউ কেউ jquery.cookie.js এর একটি পুরানো সংস্করণ ব্যবহার করছে, দয়া করে উত্স কোডটি পরীক্ষা করুন, কখনও কখনও ভুল ফাইলটি সক্রিয় থাকে।
ডেক্সটার

দয়া করে মনে রাখবেন এটি কুকিজকে জেসন হিসাবে সর্বজনীনভাবে বিবেচিত করবে। ফলস্বরূপ, অন্ধভাবে যুক্ত করা $cookie.json = trueআপনার অন্যান্য কুকিজের সাথে দ্বন্দ্বের কারণ হতে পারে। সুতরাং ইতিমধ্যে অন্য যে কোনও জায়গায় কুকি ব্যবহার করে এমন একটি প্রকল্পে এটি ব্যবহারে সতর্ক থাকুন!
এরিক Tjossem

জটিল জসনের জন্য আপনার কি কোনও সমাধান আছে? আমার
জসনে

7

JSON.stringify(userData)স্ট্রিং কভার্টি জেসন অবজেক্ট ব্যবহার করুন ।

var dataStore = $.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));

এবং কুকি ব্যবহার থেকে ফিরে পেতে JSON.parse()

var data=JSON.parse($.cookie("basket-data"))

4

JSON.stringify(userData)কুকিতে যে মূল্য ফিরে আসে তা সংরক্ষণ করা ভাল অনুশীলন নয় ; এটি কিছু ব্রাউজারে একটি বাগ তৈরি করতে পারে।

এটি ব্যবহার করার পূর্বে, আপনি এটি রূপান্তর করা উচিত করুন Base64- (ব্যবহার btoa), এবং যখন এটা পড়া থেকে ধর্মান্তরিত করুন Base64- (ব্যবহার atob)।

val = JSON.stringify(userData)
val = btoa(val)

write_cookie(val)

3
আপনার কী এমন কোনও ব্রাউজারের রেফারেন্স রয়েছে যা নিয়ে সমস্যা আছে?
মার্থিন

1
আমি জাঙ্গো প্ল্যাটফর্মের ক্রোমে কুকি হিসাবে জসনের একটি তালিকা ব্যবহার করি। এটি কিছু সমস্যা আছে। এছাড়াও, ব্যবহারকারীর কাছ থেকে কুকি দ্বারা পাস করা আসল ডেটা লুকিয়ে রাখা আরও সর্বদা ভাল
Eyal Ch

1
সার্ভার প্রান্তের উপর, পাইথন এর স্ট্যান্ডার্ড কুকি হ্যান্ডলিং ধারণকারী কুকিজ প্রত্যাখ্যান করবে {বা }, এবং নিঃশব্দে কোনো কুকিজ যা কুকি হেডারের মধ্যে প্রত্যাখ্যাত কুকি অনুসরণ ড্রপ।
snakecharmerb

2

JSON এবং বেস 64 হিসাবে ডেটা সিরিয়ালাইজ করে, নির্ভরতা jquery.cookie.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));
}

:)


0

এটি ব্যবহার করে দেখুন: https://github.com/tantau-horia/jquery-SuperCookie

দ্রুত ব্যবহার:

তৈরি - কুকি তৈরি

চেক - চেক উপস্থিতি

যাচাই করুন - JSON হলে কুকি মানটি যাচাই করুন

check_index - JSON- এ সূচকের উপস্থিত রয়েছে কিনা তা যাচাই করুন

পঠন_মূল্য - স্ট্রিং হিসাবে কুকি মান পড়ুন

read_JSON - JSON অবজেক্ট হিসাবে কুকি মান পড়ুন

পঠন_মূল্য - JSON অবজেক্টে সঞ্চিত সূচকের মান পড়ুন

প্রতিস্থাপন_মূল্য - JSON অবজেক্টে সঞ্চিত নির্দিষ্ট সূচক থেকে মান প্রতিস্থাপন করুন

সরান_মূল্য - JSON অবজেক্টে সঞ্চিত মান এবং সূচক মুছে ফেলুন

শুধু ব্যবহার করুন:

$.super_cookie().create("name_of_the_cookie",name_field_1:"value1",name_field_2:"value2"});
$.super_cookie().read_json("name_of_the_cookie");
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.