Home Php JSON PHP

JSON PHP

196
0

Un uso comune di JSON è leggere i dati da un server Web e visualizzare i dati in una pagina Web.

Questo capitolo ti insegnerà come scambiare dati JSON tra il client e un server PHP.
Il file PHP

PHP ha alcune funzioni integrate per gestire JSON.

Gli oggetti in PHP possono essere convertiti in JSON utilizzando la funzione PHP json_encode():

 

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

$myJSON = json_encode($myObj);

echo $myJSON;
?>

Il client JavaScript

Ecco un JavaScript sul client, che utilizza una chiamata AJAX per richiedere il file PHP dall’esempio sopra:

const xmlhttp = new XMLHttpRequest();
xmlhttp.onload = function() {
  const myObj = JSON.parse(this.responseText);
  document.getElementById("demo").innerHTML = myObj.name;
}
xmlhttp.open("GET", "demo_file.php");
xmlhttp.send()

database PHP

PHP è un linguaggio di programmazione lato server e può essere utilizzato per accedere a un database.

Immagina di avere un database sul tuo server e di voler inviare una richiesta dal client in cui chiedi le prime 10 righe in una tabella chiamata “clienti”.

Sul client, crea un oggetto JSON che descriva i numeri di righe che desideri restituire.

Prima di inviare la richiesta al server, converti l’oggetto JSON in una stringa e invialo come parametro all’url della pagina PHP:
Esempio

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.php?x=" + dbParam);
xmlhttp.send();

Utilizza JSON.stringify() per convertire l’oggetto JavaScript in JSON:

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

$myJSON = json_encode($myArr);

echo $myJSON;
?>

Esempio spiegato:

  • Definire un oggetto contenente una proprietà e un valore “limite”.
  • Converti l’oggetto in una stringa JSON.
  • Invia una richiesta al file PHP, con la stringa JSON come parametro.
  • Attendi fino a quando la richiesta ritorna con il risultato (come JSON)
  • Visualizza il risultato ricevuto dal file PHP.

Dai un’occhiata al file PHP


<span class="phpcolor"><span class="phptagcolor"><?php</span>
header(<span class="phpstringcolor">"Content-Type: application/json; charset=UTF-8"</span>);
$obj = json_decode(<span class="phpglobalcolor">$_GET</span>[<span class="phpstringcolor">"x"</span>], false);

$conn = <span class="phpkeywordcolor">new</span> mysqli(<span class="phpstringcolor">"myServer"</span>, <span class="phpstringcolor">"myUser"</span>, <span class="phpstringcolor">"myPassword"</span>, <span class="phpstringcolor">"Northwind"</span>);
$stmt = $conn->prepare(<span class="phpstringcolor">"SELECT name FROM customers LIMIT ?"</span>);
$stmt->bind_param(<span class="phpstringcolor">"s"</span>, $obj->limit);
$stmt->execute();
$result = $stmt->get_result();
$outp = $result->fetch_all(MYSQLI_ASSOC);

<span class="phpkeywordcolor">echo</span> json_encode($outp);
<span class="phptagcolor">?></span></span>

File PHP spiegato:

Converti la richiesta in un oggetto, utilizzando la funzione PHP json_decode().
Accedi al database e riempi un array con i dati richiesti.
Aggiungi l’array a un oggetto e restituisci l’oggetto come JSON utilizzando la funzione json_encode().

Usa i dati

<span class="jscolor">xmlhttp.<span class="jspropertycolor">onload</span> = <span class="jskeywordcolor">function</span>() {
<span class="jskeywordcolor">const</span> myObj = JSON.<span class="jspropertycolor">parse</span>(<span class="jskeywordcolor">this</span>.<span class="jspropertycolor">responseText</span>);
<span class="jskeywordcolor">let</span> text = <span class="jsstringcolor">""</span>;
<span class="jskeywordcolor">for</span> (<span class="jskeywordcolor">let</span> x <span class="jskeywordcolor">in</span> myObj) {
text += myObj[x].<span class="jspropertycolor">name</span> + <span class="jsstringcolor">"<br>"</span>;
}
document.<span class="jspropertycolor">getElementById</span>(<span class="jsstringcolor">"demo"</span>).<span class="jspropertycolor">innerHTML</span> = text;
}</span>

Metodo PHP = POST

Quando si inviano dati al server, spesso è meglio utilizzare il metodo HTTP POST.

Per inviare richieste AJAX utilizzando il metodo POST, specificare il metodo e l’intestazione corretta.

I dati inviati al server devono ora essere un argomento per il metodo 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 + ”
“;
}
document.getElementById(“demo”).innerHTML = text;
}
xmlhttp.open(“POST”, “json_demo_db_post.php”);
xmlhttp.setRequestHeader(“Content-type”, “application/x-www-form-urlencoded”);
xmlhttp.send(“x=” + dbParam);
[/javascrit]
L’unica differenza nel file PHP è il metodo per ottenere i dati trasferiti.
File PHP

Utilizza $_POST invece di $_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);
?>
Previous articlePHP MySQL Impaginazione Successivo Precedente Esempio
Next articlepermalink in php

LEAVE A REPLY

Please enter your comment!
Please enter your name here