با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با یکی دیگر از جلسات دوره کامل آموزش JavaScript در خدمت شما دوستان هستیم. در این جلسه قصد داریم به آموزش و استفاده از JSON در PHP بپردازیم.
همانطور که قبلا نیز اشاره کردیم، JSON معمولا برای تبادل اطلاعات با سرور انجام می شود.
php توابع از پیش تعریف شده ای برای کار با json دارد.
اشیا php با استفاده از تابع ()json_encode می توانند به json تبدیل شوند:
1 2 3 4 5 6 7 8 9 | <?php $myObj->name = "John"; $myObj->age = 30; $myObj->city = "New York"; $myJSON = json_encode($myObj); echo $myJSON; ?> |
کد زیر جاوا اسکریپت در سمت کاربر می باشد که از AJAX برای ارسال درخواست به فایل php بالا استفاده می کند.
مثال زیر از تابع ()JSON.parse برای تبدیل json به اشیا php استفاده می کند:
1 2 3 4 5 6 7 8 9 | 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 نیز با استفاده از تابع ()json_encode تبدیل به json می شوند:
1 2 3 4 5 6 7 | <?php $myArr = array("John", "Mary", "Peter", "Sally"); $myJSON = json_encode($myArr); echo $myJSON; ?> |
کد زیر جاوا اسکریپت سمت کاربر بوده که با استفاده از AJAX یک درخواست به فایل PHP بالا (آرایه) ارسال می کند:
1 2 3 4 5 6 7 8 9 | 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 یک زبان برنامه نویسی سمت سرور است و باید اعمالی که تنها توسط سرور انجام می شود، استفاده شود. مانند دسترسی به پایگاه داده.
تصور کنید که یک پایگاه داده بر روی سرور دارید که شامل مشتریان، محصولات و متصدیان می باشد.
می خواهیم یک درخواست به سرور ایجاد کنیم که ۱۰ رکورد اول جدول مشتریان را به ما تحویل دهد:
1 2 3 4 5 6 7 8 9 10 | 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(); |
توضیحات مثال:
کد زیر فایل php می باشد که به آن درخواست ارسال کردیم:
1 2 3 4 5 6 7 8 9 10 11 | <?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 را به یک شی جاوا اسکریپت تبدیل می کنیم یا در این مثال تبدیل به یک آرایه جاوا اسکریپت:
1 2 3 4 5 6 7 8 9 10 11 | ... 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
هنگام ارسال اطلاعات به سرور بهتر است همیشه از متد HTTP POST استفاده کنیم.
برای ارسال درخواست AJAX با مند POST، متد و هدر را مشخص می کنیم.
داده های ارسال شده به سرور باید یک آرگومان به مند ()send ارسال کنند:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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 نیز به شکل زیر تغییر می کند:
1 2 3 4 5 6 7 8 9 10 11 | <?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); ?> |
جلسه آموزش استفاده از json در php نیز به پایان رسید.
در جلسه بعد به آموزش استفاده از json در html خواهیم پرداخت. با ما همراه باشید.