JSON PHP

ການນຳໃຊ້ທົ່ວໄປຂອງ JSON ແມ່ນທີ່ອ່ານຂໍ້ມູນຈາກທີ່ຫຼັງຄອມພິວເຕີບ web ແລະສະແດງຂໍ້ມູນພວກນັ້ນໃນເວັບໄຊ:

ວັນນີ້ຈະສອນທີ່ຈະປ່ຽນປ່ຽນຂໍ້ມູນ JSON ລະຫວ່າງທີ່ຢູ່ບາງຫຼັງຄອມພິວເຕີບ PHP:

ເອບພິພາກສາ PHP

PHP ສະໜອງຫົວຫຼັກທີ່ກຳນົດໃຫ້ຈັດການ JSON:

ຜ່ານການນຳໃຊ້ຫົວຫຼັກ PHP: json_encode(),PHP ຂອງອົງການສາມາດປ່ຽນໄປຫາ JSON:

ເອບພິພາກສາ PHP

<?php
myObj->name = "Bill Gates";
myObj->age = 62;
$myObj->city = "Seattle";
$myJSON = json_encode($myObj);
echo $myJSON;
?>

显示 PHP 文件

客户端 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;
?>

显示 PHP 文件

客户端 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 ບັນຊີຫົວຫຼັກ:

  • ການປ່ຽນຂໍ້ມູນເວລາທີ່ຖືກຂໍ້ສັງເກດໄປເປັນໂອລເຈັກຕັນຫຼືເປັນຫົວຫຼັກຂອງ PHP ກົນລະຍຸດ. json_decode().
  • ການເຂົ້າໄປບັນຊີດັບດັນດ້ວຍຂໍ້ມູນທີ່ຂໍ້ສັງເກດ.
  • ການເພີ່ມສາຍວິທະຍຸໄປໃນໂອລເຈັກຕັນໃນການນຳໃຊ້ json_encode() ກົນລະຍຸດກັບ JSON ກັບໂອລເຈັກຕັນ.

ການກວດສອບຂໍ້ມູນ

ການປ່ຽນຂໍ້ມູນຈາກເອສບອຍ PHP ກັບ 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.

ສະນັ້ນເພື່ອນຳໃຊ້ກົນລະຍຸດ POST ເພື່ອສົ່ງຂໍ້ມູນ AJAX ການລະບຸວ່າກົນລະຍຸດພາຍໃນຫົວຫຼັກຂອງຫົວຫຼັກແລະຫົວຫຼັກຫົວຫຼັກຫຼັກ.

ຂໍ້ມູນທີ່ສົ່ງໄປໃຫ້ສະຖານທີ່ບໍລິການອາດໄດ້ແມ່ນ .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);
?>