گروه مقاله : جاوا اسكريپت Java Script
تاريخ انتشار : 1396/06/15 - 12:07
كد :7837

استفاده از php در جیسون

در این مقاله از 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);
?>

 

براي بهره مندي از مشاوره تخصصي در زمینه طراحی سایت در کرج با شرکت سارگون تماس بگيريد

نظرات كاربران :