Tìm hiểu về JSON PHP
Việc sử dụng JSON phổ biến là đọc dữ liệu từ máy chủ web và hiển thị dữ liệu trong một trang web. Bài viết này sẽ hướng dẫn bạn cách trao đổi dữ liệu JSON giữa máy client và máy chủ PHP. Tệp tin PHP PHP có một số hàm được tích hợp sẵn để xử lý JSON. Các đối ...
Việc sử dụng JSON phổ biến là đọc dữ liệu từ máy chủ web và hiển thị dữ liệu trong một trang web. Bài viết này sẽ hướng dẫn bạn cách trao đổi dữ liệu JSON giữa máy client và máy chủ PHP.
Tệp tin PHP
PHP có một số hàm được tích hợp sẵn để xử lý JSON. Các đối tượng trong PHP có thể được chuyển đổi thành JSON bằng cách sử dụng hàm PHP json_encode():
<?php $myObj->name = "John"; $myObj->age = 30; $myObj->city = "New York"; $myJSON = json_encode($myObj); echo $myJSON; ?>
Máy client JavaScript
Đây là một JavaScript trên máy client, sử dụng hàm gọi AJAX để yêu cầu tệp PHP từ ví dụ trên. Sử dụng JSON.parse() để chuyển đổi kết quả thành một đối tượng JavaScript:
var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { var myObj = JSON.parse(this.responseText); document.getElementById("demo").innerHTML = myObj.name; } }; xmlhttp.open("GET", "demo_file.php", true); xmlhttp.send();
Mảng PHP
Mảng trong PHP cũng sẽ được chuyển đổi thành JSON khi sử dụng hàm PHP json_encode():
<?php $myArr = array("John", "Mary", "Peter", "Sally"); $myJSON = json_encode($myArr); echo $myJSON; ?>
Máy client JavaScript
Đây là một JavaScript trên máy client, sử dụng hàm gọi AJAX để yêu cầu tệp PHP từ ví dụ mảng trên. Sử dụng JSON.parse() để chuyển đổi kết quả thành mảng JavaScript:
var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { var myObj = JSON.parse(this.responseText); document.getElementById("demo").innerHTML = myObj[2]; } }; xmlhttp.open("GET", "demo_file_array.php", true); xmlhttp.send();
Cơ sở dữ liệu PHP
PHP là một ngôn ngữ lập trình phía máy chủ, và nên được sử dụng cho các hoạt động mà chỉ có thể được thực hiện bởi một máy chủ, như truy cập vào một cơ sở dữ liệu.
Hãy tưởng tượng bạn có một cơ sở dữ liệu trên máy chủ chứa khách hàng, sản phẩm và nhà cung cấp. Bạn muốn thực hiện yêu cầu tới máy chủ nơi bạn yêu cầu 10 hồ sơ đầu tiên trong bảng “customers”. Sử dụng JSON.stringify() để chuyển đổi đối tượng JavaScript thành 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", "json_demo_db.php?x=" + dbParam, true); xmlhttp.send();
Giải thích ví dụ trên:
- Xác định một đối tượng có chứa thuộc tính table và thuộc tính giới hạn.
- Chuyển đổi đối tượng thành một chuỗi JSON.
- Gửi yêu cầu đến tệp PHP, với chuỗi JSON làm tham số.
- Chờ cho đến khi yêu cầu trả về kết quả (như JSON)
- Hiển thị kết quả nhận được từ tệp PHP.
Tệp PHP như sau:
<?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); ?>
Giải thích về tệp tin PHP:
- Chuyển đổi yêu cầu thành một đối tượng, sử dụng hàm PHP json_decode().
- Truy cập cơ sở dữ liệu, và điền vào một mảng với các dữ liệu yêu cầu.
- Thêm mảng vào một đối tượng và trả lại đối tượng là JSON bằng cách sử dụng hàm json_encode().
Vòng lặp thông qua kết quả
Chuyển đổi kết quả nhận được từ tệp PHP thành đối tượng JavaScript hoặc trong trường hợp này là một mảng JavaScript. Sử dụng JSON.parse() để chuyển đổi JSON thành một đối tượng 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; } }; ...
Phương thức PHP = POST
Khi gửi dữ liệu đến máy chủ, tốt nhất nên sử dụng phương thức HTTP POST. Để gửi yêu cầu AJAX sử dụng phương thức POST, chỉ định phương thức và phần header chính xác. Các dữ liệu được gửi đến máy chủ phải là một đối số cho phương thức .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", "json_demo_db_post.php", true); xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlhttp.send("x=" + dbParam);
Sự khác biệt duy nhất trong tệp PHP là phương thức để nhận dữ liệu được truyền. Sử dụng _POST thay vì $ _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); ?>
- Học lập trình front-end cơ bản với bootstrap 4/html5/css3
- Học lập trình front-end nâng cao qua Project thực tế
- Học thiết kế web với Photoshop, CSS theo kiểu SASS
- Học cách sử dụng Git_hub cho lập trình viên
- Học lập trình Back-end PHP theo mô hình MVC cơ bản
- Học lập trình Back-end PHP theo mô hình MVC nâng cao
- Học lập trình Cơ sở dữ liệu với AngularJS
- Học lập trình theme wordpress. Làm ra mọi website hoàn chỉnh với wordpress
- Combo lập trình front-end từ cơ bản – nâng cao
- Combo lập trình back-end từ cơ bản đến nâng cao
- Combo lập trình web với word press từ A-Z