---
title: JSON PHP
description: "> A common use of JSON is to read data from a web server, and display the data in a web page. > > > > This chapter will teach you how to exchange JSON data between the client and…"
url: "https://apprentice.mn/docs/json-php/"
updated: "2021-05-19"
category: Javascript
---

# JSON PHP

> A common use of JSON is to read data from a web server, and display the data in a web page.
>
>
>
> This chapter will teach you how to exchange JSON data between the client and a PHP server.

## The PHP File

PHP has some built-in functions to handle JSON.

Objects in PHP can be converted into JSON by using the PHP function json_encode():

### PHP file

      `<?php
$myObj->name = "John";
$myObj->age = 30;
$myObj->city = "New York";

$myJSON = json_encode($myObj);

echo $myJSON;
?>`

## The Client JavaScript

Here is a JavaScript on the client, using an AJAX call to request the PHP file from the example above:

### Example

Use JSON.parse() to convert the result into a JavaScript object:

      `var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
  if (this.readyState == 4 &#x26;&#x26; this.status == 200) {
    var myObj = JSON.parse(this.responseText);
    document.getElementById(&#x22;demo&#x22;).innerHTML = myObj.name;
  }
};
xmlhttp.open(&#x22;GET&#x22;, &#x22;demo_file.php&#x22;, true);
xmlhttp.send();`

## PHP Array

Arrays in PHP will also be converted into JSON when using the PHP function json_encode():

### PHP file

      `<?php
$myArr = array("John", "Mary", "Peter", "Sally");

$myJSON = json_encode($myArr);

echo $myJSON;
?>`

## The Client JavaScript

Here is a JavaScript on the client, using an AJAX call to request the PHP file from the array example above:

### Example

Use JSON.parse() to convert the result into a JavaScript array:

      `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();`

## PHP Database

PHP is a server side programming language, and can be used to access a database.

Imagine you have a database on your server, and you want to send a request to it from the client where you ask for the 10 first rows in a table called “customers”.

On the client, make a JSON object that describes the numbers of rows you want to return.

Before you send the request to the server, convert the JSON object into a string and send it as a parameter to the url of the PHP page:

### Example

Use JSON.stringify() to convert the JavaScript object into JSON:

      `obj = { "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();`

### Example explained:

- Define an object containing a “limit” property and value.
- Convert the object into a JSON string.
- Send a request to the PHP file, with the JSON string as a parameter.
- Wait until the request returns with the result (as JSON)
- Display the result received from the PHP file.

 

Take a look at the PHP file:

### PHP file

      `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 File explained:

- Convert the request into an object, using the PHP function json_decode().
- Access the database, and fill an array with the requested data.
- Add the array to an object, and return the object as JSON using the json_encode() function.

## Loop Through the Result

Convert the result received from the PHP file into a JavaScript object, or in this case, a JavaScript array:

### Example

Use JSON.parse() to convert the JSON into a JavaScript object:

      `...
xmlhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    myObj = JSON.parse(this.responseText);
    for (x in myObj) {
      txt += myObj[x].name + "";
    }
    document.getElementById("demo").innerHTML = txt;
  }
};
...`

## PHP Method = POST

When sending data to the server, it is often best to use the HTTP `POST` method.

To send AJAX requests using the `POST` method, specify the method, and the correct header.

The data sent to the server must now be an argument to the `send()` method:

### Example

      `obj = { "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 + "";
    }
    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);`

The only difference in the PHP file is the method for getting the transferred data.

### PHP file

Use $_POST instead of $_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);
?>`        [https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fapprentice.mn%2Fdocs%2Fjson-php%2F&linkname=JSON%20PHP](https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fapprentice.mn%2Fdocs%2Fjson-php%2F&linkname=JSON%20PHP)[https://www.addtoany.com/add_to/mastodon?linkurl=https%3A%2F%2Fapprentice.mn%2Fdocs%2Fjson-php%2F&linkname=JSON%20PHP](https://www.addtoany.com/add_to/mastodon?linkurl=https%3A%2F%2Fapprentice.mn%2Fdocs%2Fjson-php%2F&linkname=JSON%20PHP)[https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fapprentice.mn%2Fdocs%2Fjson-php%2F&linkname=JSON%20PHP](https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fapprentice.mn%2Fdocs%2Fjson-php%2F&linkname=JSON%20PHP)[https://www.addtoany.com/share](https://www.addtoany.com/share)
