JSON PHP
amfani na farko na JSON shine girmawa data daga server web, kuma sannan zubar da su a wasan kwaikwayo.
chapter na yau yana ba da kowarwa kan kama gudanarwa da data JSON tsakanin server PHP da client.
PHP 文件
PHP ya kuma koyar da kwarewa JSON.
tafida PHP functions json_encode()
kamarin PHP na iya kuma zuwa JSON:
PHP 文件
<?php $myObj->name = "Bill Gates"; a$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 数组
在使用 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 文件:
مثال
ka ɗauɗa: 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 是服务器端编程语言,应该用于只能由服务器执行的操作,比如访问数据库。
想象一下服务器上有一个数据库,包含客户、产品和供应商数据。
此刻,您需要请求服务器来获取“客户”表中前十条记录:
مثال
ka ɗauɗa: JSON.stringify()
taɓaɓin ɗan JavaScript ɗan ɗaɓo ɗan 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();
kawari:
- taɓaɓin ɗin ɗan haɗa ɗan ɗaɓo ɗan table da ɗan 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:
- تحويل الطلب إلى عنصر باستخدام دالة 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); ?>