جیسان پی ایچ پی

JSON کا معمولی استعمال یہ ہے کہ وеб سرور سے اعداد وشمار پڑھا جائے اور اس کو ووب پیج میں دکھایا جائے。

اس فصل میں آپ کو بتایا جائے گا کہ کیسے کلائنٹ اور PHP سرور کے درمیان JSON اعداد وشمار تبادلہ کیاجاسکتا ہے。

فایل‌های PHP

PHP کو JSON کو ہندل کرنے کے لئے داخلی توابع فراہم کرتا ہے。

استفاده از تابع PHP json_encode()،PHP میں کچھ اشیاء کو JSON میں تبدیل کیا جاسکتا ہے:

فایل‌های PHP

<?php
$myObj->name = \
$myObj->age = 62;
$myObj->city = "Seattle";
$myJSON = json_encode($myObj);
echo $myJSON;
؟>

پی ایچ پی فائل کو دکھائیں

کلائنٹ جاوا اسکریپٹ

یہ کلائنٹ سائیڈ جاوا اسکریپٹ ہے، جس میں ایک ایک پی ایچ پی فائل کو ریوک کریں گا:

مثال

استفاده جیسان پارسیگ نتیجے کو جاوا اسکریپٹ اوبجیکٹ کو تبدیل کریں:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()  {
    if (this.readyState == 4 && this.status == 200) {
         myObj = JSON.parse(this.responseText);
         document.getElementById("demo").innerHTML = myObj.name;
     });
});
xmlhttp.open("GET", "demo_file.php", true);
xmlhttp.send();

آزمایش کنید

پی ایچ پی آرائیبل

جب آپ پی ایچ پی فانکشن استعمال کرتے ہیں json_encode() جب، پی ایچ پی میں آرائیبل بھی جی ایس این کو تبدیل کریں گا:

فایل‌های PHP

<?php
$myArr = array("Bill Gates", "Steve Jobs", "Elon Musk");
$myJSON = json_encode($myArr);
echo $myJSON;
؟>

پی ایچ پی فائل کو دکھائیں

کلائنٹ جاوا اسکریپٹ

یہ کلائنٹ سائیڈ جاوا اسکریپٹ ہے، جس میں ایک ایک پی ایچ پی فائل کو ریوک کریں گا:

مثال

کریپارٹ جیسان پارسیگ نتیجے کو جاوا اسکریپٹ آرائیبل کو تبدیل کریں:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()  {
    if (this.readyState == 4 && this.status == 200) {
         myObj = JSON.parse(this.responseText);
         document.getElementById("demo").innerHTML = myObj[2];
     });
});
xmlhttp.open("GET", "demo_file_array.php", true);
xmlhttp.send();

آزمایش کنید

پی ایچ پی ڈاٹا بیس

پی ایچ پی سرور سائیڈ پروگرامنگ زبان ہے، جس کو صرف سرور کی جانب سے چلایا جانا چاہیے، مثلاً ڈاٹا بیس تک رسائی کے لئے استعمال کیا جانا چاہیے。

فکر کریں کہ سروےرو پر ایک ڈاٹا بیس ہے، جس میں کسٹمر، پروڈکٹ اور سپلائیئر کی امداد فراہم کی جاتی ہے。

آپ کا یہاں، آپ کی ضرورت کی ہوتی ہے کہ آپ کی جانب سے سروےرو کی جانب سے "کستمر" جدول میں پہلے دس ریکارڈز کی مانگ کریں:

مثال

کریپارٹ جیسان اسٹرنگی فیکس جس میں جاوا اسکریپٹ اپنے اپنے اوبجیکٹ کو جی ایس این کو تبدیل کرنا چاہتا ہے:

obj = { "table":"customers", "limit":10 };
dbParam = JSON.stringify(obj);
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
     if (this.readyState == 4 && this.status == 200) {
        document.getElementById("demo").innerHTML = this.responseText;
    });
});
xmlhttp.open("GET", "demo_json_db.php?x=" + dbParam, true);
xmlhttp.send();

آزمایش کنید

مثال کی تفسیر:

  • مفہوم درج کریں جس میں table اور limit اپنے حامل اٹیبلز اور محدودیت ہو
  • این شیء را به یک رشته JSON تبدیل کنید.
  • درخواستی به این فایل PHP ارسال کنید، که JSON به عنوان پارامتر استفاده می‌شود.
  • منتظر بمانید تا درخواست به نتایج برسد (به عنوان JSON).
  • نتایجی که از فایل PHP دریافت شده است را نمایش دهید.

فایل PHP را بررسی کنید

فایل‌های 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 json_encode($outp);
؟>

توضیحات فایل PHP:

  • درخواست را به شیء تبدیل کنید، از json_decode().
  • داده‌های درخواست شده را برای پر کردن آرایه از پایگاه داده بازیابی کنید.
  • آرایه را به شیء اضافه کنید، از json_encode() این تابع شیء را به صورت JSON برمی‌گرداند.

نتایج را جستجو کنید

نتایج را از فایل PHP به شیء جاوااسکریپت تبدیل کنید، یا به عنوان مثال، یک آرایه جاوااسکریپت در این مثال:

مثال

استفاده جیسان پارسیگ JSON را به شیء جاوااسکریپت تبدیل کنید:

...
xmlhttp.onreadystatechange = function() {
     if (this.readyState == 4 && this.status == 200) {
         myObj = JSON.parse(this.responseText);
         for (x in myObj) {
             txt += myObj[x].name + "<br>";
        });
         document.getElementById("demo").innerHTML = txt;
    });
});
 ...

آزمایش کنید

روش PHP = POST

در هنگام ارسال داده به سرور، بهتر است از روش HTTP POST استفاده کنید.

برای ارسال درخواست AJAX با روش POST، این روش و سرآیند صحیح را مشخص کنید.

داده‌هایی که به سرور ارسال می‌شود باید .send(); پارامترز کی روش

مثال

obj = { "table":"customers", "limit":10 };
dbParam = JSON.stringify(obj);
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
     if (this.readyState == 4 && this.status == 200) {
         myObj = JSON.parse(this.responseText);
         for (x in myObj) {
             txt += myObj[x].name + "<br>";
        });
         document.getElementById("demo").innerHTML = txt;
    });
});
xmlhttp.open("POST", "demo_json_db.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("x=" + dbParam);

آزمایش کنید

تنها تفاوت فایل‌های PHP در روشی است که داده‌های ارسال شده را دریافت می‌کنند.

فایل‌های PHP

استفاده $_POST بجای $_GET:

<?php
header("Content-Type: application/json; charset=UTF-8");
$obj =  json_decode($_POST["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 json_encode($outp);
؟>