٪۴۰ تخفیف تابستانه شروع شد! بزرگترین حراج سال ما

به ما بپیوندید

آموزش JSON PHP

استفاده معمول از JSON خواندن داده ها از یک وب سرور و نمایش داده ها در یک صفحه وب است. در این فصل نحوه تبادل داده های JSON بین سرویس گیرنده و سرور PHP به شما آموزش داده می شود.…

محمد یوسفی

30 جولای 2021

استفاده معمول از JSON خواندن داده ها از یک وب سرور و نمایش داده ها در یک صفحه وب است.

در این فصل نحوه تبادل داده های JSON بین سرویس گیرنده و سرور PHP به شما آموزش داده می شود.


فایل PHP

PHP توابع داخلی برای مدیریت JSON دارد.

اشیا in موجود در PHP با استفاده از عملکرد PHP json_encode () به JSON تبدیل می شوند :

پرونده PHP

<?php
$myObj->name = "John";
$myObj->age = 30;
$myObj->city = "New York";

$myJSON = json_encode($myObj);

echo $myJSON;
?>

مشتری جاوا اسکریپت

در اینجا با استفاده از تماس AJAX برای درخواست فایل PHP از مثال بالا ، یک JavaScript روی مشتری وجود دارد:

مثال

برای تبدیل نتیجه به یک شی JavaScript از () JSON.parse استفاده کنید:

const xmlhttp = new XMLHttpRequest();
xmlhttp.onload = function() {
  const myObj = JSON.parse(this.responseText);
  document.getElementById("demo").innerHTML = myObj.name;
}
xmlhttp.open("GET", "demo_file.php");
xmlhttp.send();

آرایه PHP

آرایه های موجود در PHP نیز هنگام استفاده از عملکرد PHP json_encode () به JSON تبدیل می شوند :

پرونده PHP

<?php
$myArr = array("John", "Mary", "Peter", "Sally");

$myJSON = json_encode($myArr);

echo $myJSON;
?>

مشتری جاوا اسکریپت

در اینجا یک JavaScript روی مشتری وجود دارد که با استفاده از یک تماس AJAX درخواست فایل PHP از مثال آرایه بالا را می دهد:

مثال

برای تبدیل نتیجه به آرایه جاوا اسکریپت از () JSON.parse استفاده کنید:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onload = function() {
  const myObj = JSON.parse(this.responseText);
  document.getElementById("demo").innerHTML = myObj[2];
}
xmlhttp.open("GET", "demo_file_array.php", true);
xmlhttp.send();

پایگاه داده PHP

PHP یک زبان برنامه نویسی سمت سرور است و می توان از آن برای دسترسی به پایگاه داده استفاده کرد.

تصور کنید که یک پایگاه داده بر روی سرور خود دارید ، و می خواهید از مشتری که 10 ردیف اول جدول را به نام “مشتری” درخواست می کنید ، از آن درخواست کنید.

در مشتری ، یک شی JSON ایجاد کنید که تعداد ردیف هایی را که می خواهید برگردانید توصیف کند.

قبل از اینکه درخواست را به سرور ارسال کنید ، شی JSON را به یک رشته تبدیل کنید و آن را به عنوان یک پارامتر به آدرس صفحه PHP ارسال کنید:

مثال

برای تبدیل شی JavaScript به JSON از () JSON.stringify استفاده کنید:

const limit = {"limit":10};
const dbParam = JSON.stringify(limit);
xmlhttp = new XMLHttpRequest();
xmlhttp.onload = function() {
  document.getElementById("demo").innerHTML = this.responseText;
}
xmlhttp.open("GET","json_demo_db.php?x=" + dbParam);
xmlhttp.send();

مثال توضیح داده شده:

  • یک شی containing حاوی ویژگی و مقدار “حد” را تعریف کنید.
  • تبدیل شی به رشته JSON.
  • با استفاده از رشته JSON به عنوان یک پارامتر ، یک درخواست به فایل PHP ارسال کنید.
  • صبر کنید تا درخواست با نتیجه برگردد (به عنوان 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");
$stmt = $conn->prepare("SELECT name FROM customers LIMIT ?");
$stmt->bind_param("s", $obj->limit);
$stmt->execute();
$result = $stmt->get_result();
$outp = $result->fetch_all(MYSQLI_ASSOC);

echo json_encode($outp);
?>

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

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

از داده استفاده کنید

مثال

xmlhttp.onload = function() {
  const myObj = JSON.parse(this.responseText);
  let text = "";
  for (let x in myObj) {
    text += myObj[x].name + "<br>";
  }
  document.getElementById("demo").innerHTML = text;
}

روش PHP = POST

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

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

داده های ارسالی به سرور اکنون باید آرگومان send()روش باشد:

مثال

const dbParam = JSON.stringify({"limit":10});
const xmlhttp = new XMLHttpRequest();
xmlhttp.onload = function() {
  const myObj = JSON.parse(this.responseText);
  let text ="";
  for (let x in myObj) {
    text += myObj[x].name + "<br>";
  }
  document.getElementById("demo").innerHTML = text;
}
xmlhttp.open("POST", "json_demo_db_post.php");
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("x=" + dbParam);

تنها تفاوت در پرونده PHP روش بدست آوردن داده های منتقل شده است.

پرونده PHP

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

<?php
header("Content-Type: application/json; charset=UTF-8");
$obj = json_decode($_POST["x"], false);

$conn = new mysqli("myServer", "myUser", "myPassword", "Northwind");
$stmt = $conn->prepare("SELECT name FROM customers LIMIT ?");
$stmt->bind_param("s", $obj->limit);
$stmt->execute();
$result = $stmt->get_result();
$outp = $result->fetch_all(MYSQLI_ASSOC);

echo json_encode($outp);
?>

منبع

مطالب مرتبط

0 0 رای ها
امتیازدهی به مقاله
اشتراک در
اطلاع از
guest
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها