JSON PHP

Ang karaniwang gamit ng JSON ay maging makuha ang data mula sa web server at ipakita ang mga ito sa web page。

Ito ang magtuturo sa iyo kung paano magpalitan ng data sa pagitan ng client at server ng PHP sa pamamagitan ng JSON。

PHP 文件

Ang PHP ay nagbibigay ng mga nakalagay na function sa paggamit ng JSON。

Sa pamamagitan ng paggamit ng function ng PHP: json_encode(),Ang mga bagay na napag-convert mula sa object ng PHP ay maaaring maging JSON:

PHP 文件

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

Ipakita ang PHP file

Client-side JavaScript

Ito ay JavaScript sa client-side, na gumagamit ng AJAX call upang hilingin ang PHP file na ito:

实例

使用 JSON.parse() Tukuyin ang resulta bilang JavaScript object:

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 array

Sa paggamit ng PHP function json_encode() Sa panahong ito, ang array sa PHP ay naging JSON din:

PHP 文件

<?php
$myArr = array("Bill Gates", "Steve Jobs", "Elon Musk");
$myJSON = json_encode($myArr);
echo $myJSON;
?>

Ipakita ang PHP file

Client-side JavaScript

Ito ay JavaScript sa client-side, na gumagamit ng AJAX call upang hilingin ang PHP file na ito:

实例

Gumamit ng: JSON.parse() Tukuyin ang resulta bilang JavaScript array:

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 Database

Ang PHP ay isang server-side programming language, dapat gamitin para sa operasyon na dapat gawin lamang ng server, tulad ng pag-access sa database.

Isipin na mayroon sa server ang isang database na naglalaman ng data ng customer, produkto at supplier.

Sa ngayon, kailangan mong hilingin sa server upang makuha ang unang sampung record ng "customer" table:

实例

Gumamit ng: JSON.stringify() Tukuyin ang JavaScript na object na naging 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();

亲自试一试

Halimbawa ng paliwanag:

  • Tukuyin ang bagay na may attribute na table at 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 方法。

如需使用 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);
?>