আমি যে পদ্ধতির ব্যবহার করতে চাই তা হ'ল জেসনকে কোনও বস্তুর আক্ষরিক সাথে প্যাড / মোড়ানো এবং তারপরে .jsonp ফাইল এক্সটেনশন দিয়ে ফাইলটি সংরক্ষণ করুন। এই পদ্ধতিটি আপনার মূল জসন ফাইলকে (টেস্ট.জসন) আনল্যাটার্ট ছেড়ে দেয়, কারণ আপনি পরিবর্তে নতুন জসনপ ফাইল (test.jsonp) এর সাথে কাজ করবেন। মোড়কের নামটি যে কোনও কিছু হতে পারে তবে আপনি জসনপ প্রক্রিয়াজাত করতে কলব্যাক ফাংশনটির মতো একই নাম হওয়া দরকার। আমি 'test.jsonp' ফাইলের জন্য jsonp মোড়ক সংযোজন দেখানোর জন্য উদাহরণ হিসাবে পোস্ট করা আপনার test.json ব্যবহার করব।
json_callback({"a" : "b", "c" : "d"});
এরপরে, ফিরে আসা জেএসএনকে ধরে রাখতে আপনার স্ক্রিপ্টে বৈশ্বিক সুযোগের সাথে একটি পুনরায় ব্যবহারযোগ্য ভেরিয়েবল তৈরি করুন। এটি কেবলমাত্র কলব্যাক ফাংশনের পরিবর্তে ফিরে আসা JSON ডেটা আপনার স্ক্রিপ্টের অন্যান্য সমস্ত ফাংশনে উপলভ্য করে তুলবে।
var myJSON;
স্ক্রিপ্ট ইনজেকশন দ্বারা আপনার জসন পুনরুদ্ধার করার জন্য একটি সহজ ফাংশন আসে। নোট করুন যে আমরা এখানে ডকুমেন্টের মাথায় স্ক্রিপ্ট সংযোজন করতে jQuery ব্যবহার করতে পারি না, কারণ IE jQuery। অ্যাপেন্ড পদ্ধতি সমর্থন করে না। নীচের কোডটিতে মন্তব্য করা jQuery পদ্ধতিটি অন্যান্য ব্রাউজারগুলিতে কাজ করবে যা .append পদ্ধতি সমর্থন করে। পার্থক্যটি দেখানোর জন্য এটি একটি রেফারেন্স হিসাবে অন্তর্ভুক্ত করা হয়েছে।
function getLocalJSON(json_url){
var json_script = document.createElement('script');
json_script.type = 'text/javascript';
json_script.src = json_url;
json_script.id = 'json_script';
document.getElementsByTagName('head')[0].appendChild(json_script);
// $('head')[0].append(json_script); DOES NOT WORK in IE (.append method not supported)
}
জেসন ফলাফলের ডেটা গ্লোবাল ভেরিয়েবলে পাওয়ার জন্য পরবর্তী একটি সংক্ষিপ্ত এবং সাধারণ কলব্যাক ফাংশন (জসনপ মোড়কের একই নাম সহ) is
function json_callback(response){
myJSON = response; // Clone response JSON to myJSON object
$('#json_script').remove(); // Remove json_script from the document
}
জসন ডেটা এখন ডট স্বরলিপি ব্যবহার করে স্ক্রিপ্টের কোনও ফাংশন দ্বারা অ্যাক্সেস করতে পারে। উদাহরণ হিসাবে:
console.log(myJSON.a); // Outputs 'b' to console
console.log(myJSON.c); // Outputs 'd' to console
আপনি যা দেখতে অভ্যস্ত তা থেকে এই পদ্ধতিটি কিছুটা আলাদা হতে পারে তবে এর অনেক সুবিধা রয়েছে। প্রথমত, একই জাসনপ ফাইলটি স্থানীয়ভাবে বা একই ফাংশন ব্যবহার করে কোনও সার্ভার থেকে লোড করা যায়। বোনাস হিসাবে, jsonp ইতিমধ্যে একটি ক্রস-ডোমেন বান্ধব ফর্ম্যাটে রয়েছে এবং সহজেই REST প্রকারের API এর সাথে ব্যবহার করা যেতে পারে।
মঞ্জুর, ফাংশন পরিচালনার ক্ষেত্রে কোনও ত্রুটি নেই, তবে আপনার কেন এটি দরকার? আপনি যদি এই পদ্ধতিটি ব্যবহার করে জসন ডেটা পেতে অক্ষম হন তবে আপনি জসনের মধ্যেই বেশ কিছু সমস্যা পেতে পারেন এবং আমি এটি একটি ভাল জেএসওন যাচাইকারীকে পরীক্ষা করে দেখতে পারি।
JSON
স্ট্রিং ফিরে আসেন আপনি ইতিমধ্যে জাভাস্ক্রিপ্ট অবজেক্টটি পুনরুদ্ধার করছেন, ব্যবহার করার দরকার নেইeval()
।