JSON PHP

JSON 的常规用途是从 web 服务器读取数据,然后在网页中显示这些数据。

本章向您讲解如何在客户端与 PHP 服务器之间交换 JSON 数据。

PHP 文件

PHP 提供处理 JSON 的内建函数。

通过使用 PHP 函数 json_encode(),PHP 中的对象可转换为 JSON:

PHP 文件

json_encode($myObj);
echo $myJSON;
?>

Onyesha faili ya PHP

JavaScript kwenye kijifunzeo cha kwanza

Hii ni JavaScript kwenye kijifunzeo cha kwanza, kinatumiwa kwa kutumia kwa kuzingatia PHP kama kina ya maelezo:

mwigili

使用 JSON.parse() Kueleza matokeo kwa kipengele cha 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();

亲自试一试

Orodha ya PHP

Kwa kutumia maelezo ya PHP json_encode() mwenye uwezo wa PHP, orodha yake kwenye PHP yana kueleza tena kama JSON:

PHP 文件

json_encode($myArr);
echo $myJSON;
?>

Onyesha faili ya PHP

JavaScript kwenye kijifunzeo cha kwanza

Hii ni JavaScript kwenye kijifunzeo cha kwanza, kinatumiwa kwa kutumia kwa kuzingatia PHP kama kina ya maelezo:

mwigili

Tumia hii: JSON.parse() Kueleza matokeo kwa orodha ya 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 kifaa cha data

PHP ni lugha ya programu ya kijifunzeo cha kijifunzeo cha kijifunzeo, inahitajika kuwa inatumiwa kwa kufanyia maadili ambayo inahitajika kufanywa na kijifunzeo cha kijifunzeo, kama ni kufikia kifaa cha data.

Tukutaka kuwa na kifaa cha data kwa mbinu ya serveri, ikiwa ni kwa wakati wa miliki, bidhaa na wategemea.

Sasa, unavyofaa kuwajifunza serveri kwa kufikia kipimo kumi cha kwanza cha tabia "miliki":

mwigili

Tumia hii: JSON.stringify() Kueleza JavaScript kipengele cha 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();

亲自试一试

Mfano wa kueleza:

  • Kieleza kina kushika taabu na kipimo kipya cha table na limit.
  • 将这个对象转换为 JSON 字符串。
  • 向这个 PHP 文件发送请求,其中 JSON 作为参数。
  • 等待直到请求返回结果(作为 JSON)。
  • 显示从 PHP 文件接收到的结果。

查看 PHP 文件

PHP 文件

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() Faa chini ya JSON inaonyesha jadui.

Kueneza mambo

Kungeza kwa sababu ya PHP file inaeleza kwa sababu ya PHP file, au kama kesi hii, kipya cha JavaScript kwa sababu ya PHP file:

mwigili

使用 JSON.parse() Kungeza JSON kwa sababu ya JavaScript jadui:

...
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 mtumiaji = POST

Kwa kushikilia data kwa mtandao, itakuwa bora kusaidia HTTP POST method.

Ili kutumia uwanja wa POST kusafiri AJAX, ingaa uwanja huo na kichwa kimeonekana.

Maombi ya kuzingatia kwa mtandao huzungumza kwa sababu ya .send(); kivyo kifaa cha

mwigili

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

$_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);
?>