در این مقاله از PHP برای اتصال به بانک داده و از جیسون برای فراخوانی داده های ارجاع شده از PHP استفاده می کنیم. این آموزش پایه ای برای ایجاد api های واسطه برای نرم افزار های تحت وب و غیره است.
در این آموزش نحوه تبادل اطلاعات بین جیسون و یک فایل php را مشاهده می کنید.
فایل PHP
PHPدارای عملگری برای کار با جیسون است. شما میتوانید با استفاده از عملگر json_encode() مقادیر PHPرا به جیسون تبدیل کنید.
<?php
$myObj->name = "John";
$myObj->age = 30;
$myObj->city = "New York";
$myJSON = json_encode($myObj);
echo $myJSON;
?>
جاوا اسکریپت در کامپیوتر مشتری
در این قسمت کد های آیجکس را برای فراخوانی فایل PHP استفاده کرده ایم:
از عملگر JSON.parse() برای تبدیل نتایج به شیئ جاوا اسکریپت استفاده کنید:
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var myObj = JSON.parse(this.responseText);
document.getElementById("demo").innerHTML = myObj.name;
}
};
xmlhttp.open("GET", "demo_file.php", true);
xmlhttp.send();
آرایه های PHP
آرایه های PHPهم میتوانند با استفاده از عملگر json_encode()به کد جیسون تبدیل شوند.
فایل PHP:
<?php
$myArr = array("John", "Mary", "Peter", "Sally");
$myJSON = json_encode($myArr);
echo $myJSON;
?>
کد جاوا اسکریپت در سیستم مشتری
در اینجا کد های آیجکس رو برای فراخوانی آرایه های PHP مشاهده میکنید.
با استفاده از عملگر JSON.parse() نتیجه به آرایه جاوا اسکریپت تبدیل میشود:
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var myObj = JSON.parse(this.responseText);
document.getElementById("demo").innerHTML = myObj[2];
}
};
xmlhttp.open("GET", "demo_file_array.php", true);
xmlhttp.send();
بانک داده PHP
PHPیک زبان سمت سرور است ، از PHPبرای اتصال به بانک داده استفاده میشود.
تصور کنید که یک بانک داده در سرور دارید که دارای اطلاعات مشتریان، کالاها و تولید کنندگان است.
شما میخواهید درخواستی به سرور ارسال کنید که ده سطر اول این جدول را برای شما فراخوانی کند.
مثال:
استفاده از متد JSON.stringify() برای تبدیل شیئ جاوا اسکریپت به جیسون:
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", "json_demo_db.php?x=" + dbParam, true);
xmlhttp.send();
توضیح مثال
تعریف شیئ جدول با یک صفت limit.
تبدیل شیئ به رشته جیسون .
فرستادن درخواست به فایل 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.parse() برای تبدیل جیسون به اشیاء جاوا اسکریپت:
...
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;
}
};
...
متد POSTدر PHP:
وقتی که اطلاعات را به سرور ارسال میکنید، اغلب از متد HTTP POSTاستفاده می کنید.
برای فرستادن درخواست آیجکس از متد POSTاستفاده کرده، و headerرا بر اساس آن ویرایش می کنیم.
داده ها به سرور ارسال شده و الان یک آروگومان از متد .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", "json_demo_db_post.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);
?>
براي بهره مندي از مشاوره تخصصي در زمینه طراحی سایت در کرج با شرکت سارگون تماس بگيريد