JSONP ব্যবহার করে Ajax Request তৈরি করা একটি কার্যকর পদ্ধতি, যা Cross-Domain Request এর সমস্যা সমাধান করে। JSONP মূলত একটি GET রিকোয়েস্ট ব্যবহার করে ডেটা রিকোয়েস্ট করে এবং তা callback function এর মাধ্যমে প্রসেস করে। JSONP এর মাধ্যমে Ajax রিকোয়েস্ট তৈরি করতে হলে একটি <script>
ট্যাগ তৈরি করতে হয় এবং সেটি ডকুমেন্টে অ্যাড করা হয়। এরপর সার্ভার JSON ডেটা রেসপন্স হিসেবে ফেরত পাঠায়, যা জাভাস্ক্রিপ্ট ফাংশনের মাধ্যমে প্রসেস হয়।
নিচে একটি উদাহরণ দেওয়া হলো যেখানে JSONP ব্যবহার করে একটি Ajax রিকোয়েস্ট তৈরি করা হয়েছে এবং সেই ডেটা প্রসেস করা হয়েছে।
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JSONP Ajax Request Example</title>
</head>
<body>
<h1>JSONP Example</h1>
<button onclick="fetchData()">Fetch Data</button>
<div id="data-container">
<!-- JSONP ডেটা এখানে দেখানো হবে -->
</div>
<script>
// Callback function যা JSONP রেসপন্স হ্যান্ডল করবে
function handleResponse(data) {
var container = document.getElementById('data-container');
container.innerHTML = 'Name: ' + data.name + ', Age: ' + data.age;
}
// JSONP রিকোয়েস্ট পাঠানোর ফাংশন
function fetchData() {
// <script> ট্যাগ তৈরি করা
var script = document.createElement('script');
// JSONP রিকোয়েস্ট URL সেট করা
// এখানে callback=handleResponse ব্যবহার করা হয়েছে
script.src = 'https://example.com/api?callback=handleResponse';
// ডকুমেন্টে <script> ট্যাগ অ্যাড করা
document.body.appendChild(script);
}
</script>
</body>
</html>
১. Callback Function:
handleResponse
ফাংশনটি সার্ভার থেকে JSONP রেসপন্স পাওয়ার পরে এক্সিকিউট হয়।২. Script Tag Creation:
fetchData()
ফাংশনটি একটি <script>
ট্যাগ তৈরি করে এবং সেটি ডকুমেন্টে অ্যাড করে।script.src
এ JSONP রিকোয়েস্টের URL সেট করা হয়েছে, যেখানে callback
প্যারামিটার হিসেবে handleResponse
পাস করা হয়েছে।৩. Server Response:
handleResponse({
"name": "John Doe",
"age": 30
});
handleResponse
ফাংশনকে কল করে এবং ডেটা প্রসেস করে।সার্ভার সাইডে JSONP রেসপন্স তৈরি করতে, সার্ভারকে callback প্যারামিটার অনুযায়ী রেসপন্স দিতে হবে। উদাহরণস্বরূপ, যদি callback হিসেবে handleResponse
পাঠানো হয়, তাহলে সার্ভার থেকে রেসপন্সটি হতে পারে:
<?php
// প্যারামিটার সংগ্রহ করা
$callback = $_GET['callback'];
// JSON ডেটা তৈরি করা
$data = array(
"name" => "John Doe",
"age" => 30
);
// JSONP রেসপন্স তৈরি করা
header('Content-Type: application/javascript');
echo $callback . '(' . json_encode($data) . ');';
?>
ব্যাখ্যা:
callback
) সংগ্রহ করা হয়েছে।json_encode()
ফাংশন ব্যবহার করে JSON ফরম্যাটে কনভার্ট করা হয়েছে।handleResponse
) কল করা হয়েছে এবং JSON ডেটা তার প্যারামিটার হিসেবে পাঠানো হয়েছে।<script>
ট্যাগ এবং একটি callback function প্রয়োজন, যা সহজ এবং কার্যকর পদ্ধতি।JSONP এখনও অনেক ক্ষেত্রে ব্যবহার করা হয়, তবে নিরাপত্তা এবং ফ্লেক্সিবিলিটির জন্য আধুনিক অ্যাপ্লিকেশনগুলোতে CORS (Cross-Origin Resource Sharing) বেশি ব্যবহৃত হয়। CORS Ajax রিকোয়েস্টের জন্য আরও বেশি নিরাপত্তা এবং নিয়ন্ত্রণ প্রদান করে।
Read more