JSONP

JSONP একটি JSON ডাটা সংক্রান্ত পদ্ধতি, যা ক্রস-ডোমেন সমস্যা নির্দিষ্ট না করেই ডাটা সংক্রান্ত পদ্ধতি।

JSONP XMLHttpRequest অবজেক্ট ব্যবহার করে না。

JSONP ের ব্যবহার <script> ট্যাগটি প্রতিস্থাপন করেছে

JSONP সম্পর্কে বিবরণ

JSONP এর মানে JSON with Padding।

অন্য ডোমেন থেকে ফাইল অনুরূপ করা সমস্যা হয়, কারণ ক্রস-ডোমেন পলিসির কারণে。

অন্য ডোমেন থেকে বহির্ভূত স্ক্রিপ্ট এই সমস্যা নেই。

JSONP ের এই সুবিধা ব্যবহার করে এবং script ট্যাগটি XMLHttpRequest অবজেক্টের পরিবর্তে ব্যবহার করে。

<script src="demo_jsonp.php">

Server ファイル

服务器上的文件在函数调用中封装结果:

ইনস্ট্যান্স

<?php
$myJSON = '{ "name":"Bill Gates", "age":62, "city":"Seattle" }';
echo "myFunc(".$myJSON.");";
?>

পিএইচপি ফাইল দেখা

ফলাফল ফিরিয়ে দেওয়া হবে, যা "myFunc" নামক ফাংশনের ফাংশন বলী এবং JSON ডাটা হিসাবে প্রমাণপত্র হবে。

ক্লায়েন্টে এই ফাংশন হয়তো বিদ্যমান থাকা দরকার।

ฟังก์ชัน JavaScript

ফাংশন "myFunc" ক্লায়েন্টে অবস্থিত, এবং JSON ডাটা প্রক্রিয়াকরণ করা হবে:

ইনস্ট্যান্স

function myFunc(myObj)  {
    document.getElementById("demo").innerHTML =  myObj.name;
{}

আপনার নিজেই চেষ্টা করুন

ডাইনামিক স্ক্রিপ্ট ট্যাগ তৈরি করা

এই উদাহরণটি পানেল লোড হওয়ার সময় "myFunc" ফাংশন চালু করে, এবং স্ক্রিপ্ট ট্যাগ এর অবস্থান অনুযায়ী এটি খুবই সন্তুষ্ট নয়。

স্ক্রিপ্টটি কেবল চাইলে তৈরি করা হবে:

ইনস্ট্যান্স

বাটন ক্লিক হওয়ার সময় <script> ট্যাগ তৈরি এবং যোগ করা হবে:

function clickButton() {
    var s = document.createElement("script");
    s.src = "demo_jsonp.php";
    document.body.appendChild(s);
{}

আপনার নিজেই চেষ্টা করুন

ডাইনামিক JSONP ফলাফল

এই উদাহরণটি এখনও স্থায়ী।

পিএইচপি ফাইলে JSON পাঠানোর মাধ্যমে ডাইনামিক উদাহরণ তৈরি করা যাবে, এবং এই পিএইচপি ফাইল থেকে পাওয়া তথ্য অনুযায়ী JSON ওবজেক্ট ফিরিয়ে দেওয়া হবে。

PHP ফাইল

<?php
header("Content-Type: application/json; charset=UTF-8");
$obj =  json_decode($_GET["x"], false);
$conn = new mysqli("myServer", "myUser", "myPassword", "Northwind");
$result = $conn->query("SELECT name FROM ".$obj->$table." LIMIT ".$obj->$limit);
$outp = array();
$outp = $result->fetch_all(MYSQLI_ASSOC);
echo "myFunc(".json_encode($outp).")";
?>

PHP ফাইল ব্যাখ্যা:

  • প্রতিজ্ঞা করা হবে, এবং PHP ফাংশন ব্যবহার করে ওবজেক্ট কনভার্ট করা হবে。 json_decode()
  • ডাটাবেস এক্সেস করা হবে, এবং অনুরূপ ডাটা একককে আইসিএফেড একককে পূর্ণ করা হবে。
  • ওবজেক্টে আইসিএফেড একককে যোগ করা হবে。
  • ব্যবহার করা হবে json_decode() এই ফাংশন এই আইসিএফেড একককে JSON-এ রূপান্তর করে。
  • ফাংশন "myFunc()"-এর মাধ্যমে প্রতিক্রিয়া ওবজেক্ট বেছে নেওয়া হবে。

জেভাস্ক্রিপ্ট ইনস্ট্যান্স

পিএইচপি ফাইল থেকে "myFunc" ফাংশন বিবেচনা করা হবে:

function clickButton() {
    var obj, s
    obj = { "table":"products", "limit":10 };
    s =  document.createElement("script");
    s.src = "jsonp_demo_db.php?x="  + JSON.stringify(obj);
    document.body.appendChild(s);
 {}
function myFunc(myObj)  {
    var x, txt = "";
    for (x in myObj)  {
        txt += myObj[x].name + "<br>";
     {}
    document.getElementById("demo").innerHTML = txt;
{}

আপনার নিজেই চেষ্টা করুন

কলব্যাক ফাংশন

যদি আপনি সার্ভার ফাইলটি নিয়ন্ত্রণ করতে পারেন না, তবে কিভাবে সার্ভার ফাইলটি সঠিক ফাংশনকে কল করা যাবে?

যখন সার্ভার ফাইলটি প্রদান করা হয়, তখন কখনও কখনও কলব্যাক ফাংশনকে পারামিটার হিসাবে প্রদান করা হয়:

ইনস্ট্যান্স

PHP ফাইল আপনার রিকগ্রিক পারামিটার হিসাবে ফাংশন কল করবে:

function clickButton() {
    var s = document.createElement("script");
    s.src = "jsonp_demo_db.php?callback=myDisplayFunction";
    document.body.appendChild(s);
{}

আপনার নিজেই চেষ্টা করুন