JSON PHP
Поширеним використанням JSON є читання даних із вебсервера та відображення даних на вебсторінці.
Цей розділ навчить вас, як обмінюватися даними JSON між клієнтом і сервером PHP.
PHP файл
PHP має деякі вбудовані функції для обробки JSON.
Об’єкти в PHP можна перетворити на JSON за допомогою функції PHP json_encode():
PHP файл
<?php
$myObj->name = "John";
$myObj->age = 30;
$myObj->city = "New York";
$myJSON = json_encode($myObj);
echo $myJSON;
?>
Показати PHP файл »
Клієнтський JavaScript
Ось JavaScript на клієнті, який використовує виклик AJAX для запиту файлу PHP із прикладу вище:
Приклад
Використовуйте JSON.parse(), щоб перетворити результат на об’єкт JavaScript:
const xmlhttp = new XMLHttpRequest();
xmlhttp.onload = function() {
const myObj = JSON.parse(this.responseText);
document.getElementById("demo").innerHTML = myObj.name;
}
xmlhttp.open("GET", "demo_file.html");
xmlhttp.send();
Спробуйте самі »
PHP Масив
Масиви в PHP також перетворюються на JSON під час використання функції PHP json_encode():
PHP файл
<?php
$myArr = array("John", "Mary", "Peter", "Sally");
$myJSON = json_encode($myArr);
echo $myJSON;
?>
Показати PHP файл »
Клієнтський JavaScript
Ось JavaScript на клієнті, який використовує виклик AJAX для запиту файлу PHP із прикладу масиву вище:
Приклад
Використовуйте JSON.parse(), щоб перетворити результат у масив JavaScript:
var xmlhttp = new XMLHttpRequest();
xmlhttp.onload = function() {
const myObj = JSON.parse(this.responseText);
document.getElementById("demo").innerHTML = myObj[2];
}
xmlhttp.open("GET", "demo_file_array.html", true);
xmlhttp.send();
Спробуйте самі »
PHP База даних
PHP — це мова програмування на стороні сервера, яку можна використовувати для доступу до бази даних.
Уявіть, що у вас є база даних на вашому сервері, і ви хочете надіслати до неї запит від клієнта, у якому ви просите 10 перших рядків у таблиці під назвою "customers".
На клієнті створіть об’єкт JSON, який описує кількість рядків, які потрібно повернути.
Перш ніж надсилати запит на сервер, перетворіть об’єкт JSON на рядок і надішліть його як параметр URL-адреси PHP-сторінки:
Приклад
Використовуйте JSON.stringify(), щоб перетворити об’єкт JavaScript у JSON:
const limit = {"limit":10};
const dbParam = JSON.stringify(limit);
xmlhttp = new XMLHttpRequest();
xmlhttp.onload = function() {
document.getElementById("demo").innerHTML = this.responseText;
}
xmlhttp.open("GET","json_demo_db.html?x=" + dbParam);
xmlhttp.send();
Спробуйте самі »
Пояснення прикладу:
- Визначте об’єкт, що містить властивість "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");
$stmt = $conn->prepare("SELECT name FROM customers LIMIT ?");
$stmt->bind_param("s", $obj->limit);
$stmt->execute();
$result = $stmt->get_result();
$outp = $result->fetch_all(MYSQLI_ASSOC);
echo json_encode($outp);
?>
Пояснення PHP файлу:
- Перетворіть запит на об’єкт за допомогою PHP функції json_decode().
- Доступ до бази даних і заповнення масиву запитуваними даними.
- Додайте масив до об’єкта та поверніть об’єкт як JSON за допомогою функції json_encode().
Використовуйте дані
Приклад
xmlhttp.onload = function() {
const myObj = JSON.parse(this.responseText);
let text = "";
for (let x in myObj) {
text += myObj[x].name + "<br>";
}
document.getElementById("demo").innerHTML = text;
}
Спробуйте самі »
PHP Метод = POST
Під час надсилання даних на сервер часто найкраще використовувати HTTP метод POST
.
Щоб надсилати запити AJAX за допомогою методу POST
, укажіть метод і правильний заголовок.
Дані, надіслані на сервер, тепер мають бути аргументом методу send()
:
Приклад
const dbParam = JSON.stringify({"limit":10});
const xmlhttp = new XMLHttpRequest();
xmlhttp.onload = function() {
const myObj = JSON.parse(this.responseText);
let text ="";
for (let x in myObj) {
text += myObj[x].name + "<br>";
}
document.getElementById("demo").innerHTML = text;
}
xmlhttp.open("POST", "json_demo_db_post.html");
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");
$stmt = $conn->prepare("SELECT name FROM customers LIMIT ?");
$stmt->bind_param("s", $obj->limit);
$stmt->execute();
$result = $stmt->get_result();
$outp = $result->fetch_all(MYSQLI_ASSOC);
echo json_encode($outp);
?>