PHP JSON
استفاده عادی JSON از خواندن دادهها از سرور وب و نمایش این دادهها در صفحه وب است.
این فصل به شما نشان میدهد که چگونه میتوانید دادههای JSON را بین سرور PHP و کلاینت رد و بدل کنید.
فایلهای PHP
PHP تابعهای داخلی برای پردازش JSON را فراهم میکند.
با استفاده از تابع PHP json_encode()
،PHP میتواند اشیاء را به JSON تبدیل کند:
فایلهای PHP
<?php $myObj->name = \ $myObj->age = 62; $myObj->city = "Seattle"; $myJSON = json_encode($myObj); echo $myJSON; ?>
JavaScript سرور
این JavaScript در سرور است که از طریق درخواست AJAX به فایل PHP در مثال قبلی دسترسی دارد:
مثال
استفاده JSON.parse()
نتایج را به شیء JavaScript تبدیل کنید:
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();
آرایه PHP
در استفاده از تابع json_encode()
در این حالت، آرایه در PHP نیز به JSON تبدیل خواهد شد:
فایلهای PHP
<?php $myArr = array("Bill Gates", "Steve Jobs", "Elon Musk"); $myJSON = json_encode($myArr); echo $myJSON; ?>
JavaScript سرور
این JavaScript در سرور است که از طریق درخواست AJAX به فایل PHP در مثال قبلی دسترسی دارد:
مثال
لطفاً از JSON.parse()
نتایج را به آرایه JavaScript تبدیل کنید:
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();
پایگاه داده PHP
PHP یک زبان برنامهنویسی سرور است و باید برای عملیاتهایی که فقط باید توسط سرور انجام شوند استفاده شود، مانند دسترسی به پایگاه داده.
تصور کنید سرور یک پایگاه داده دارد که شامل دادههای مشتری، محصول و تامینکنندگان است.
در این لحظه، شما باید درخواستی به سرور ارسال کنید تا ده اولین رکورد جدول "مشتری" را دریافت کنید:
مثال
لطفاً از JSON.stringify()
JavaScript شیء را به JSON تبدیل کنید:
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 به شیء JavaScript تبدیل کنید، یا به عنوان مثال، یک آرایه JavaScript در این مثال:
مثال
استفاده JSON.parse()
JSON را به شیء JavaScript تبدیل کنید:
... 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); ?>