In PHP possiamo gestire il formato JSON di AJAX con relativa semplicità.
Sostanzialmente ci occorrono questi componenti:
- dei dati sotto forma di un array associativo
- l'header HTTP Content-Type impostato su application/json
- la funzione json_encode() per la codifica dei dati in formato JSON.
Usando un approccio OO potremmo scrivere il seguente codice:
namespace App;
use Database;
class Ajax {
private $request = $_POST;
private $param;
protected $term;
public function __construct($p) {
$this->param = $p;
$this->term = $this->request[$this->param];
}
public function process() {
$this->headers();
$db = new Database();
$query = $db->sanitize($this->term);
$results = $db->query("SELECT * FROM docs WHERE title LIKE '%$query%'");
echo json_encode($results);
exit();
}
public function getTerm() {
return $this->term;
}
private function headers() {
header('Content-Type: application/json');
}
}
Esempio d'uso:
$ajax = new Ajax('s');
$ajax->process();
Usando un approccio procedurale avremo invece:
<?php
header('Content-Type: application/json');
$db = new mysqli('localhost', 'user', 'password','database');
$output = [];
if ($db->connect_errno) {
$output['error'] = $db->connect_error;
} else {
$query = $db->real_escape_string(trim($_POST['s']));
$result = $db->query("SELECT * FROM docs WHERE title LIKE '%$query%'");
if($result) {
while ($row = $result->fetch_object()){
$output[] = $row;
}
$result->close();
} else {
$output['error'] = $db->error;
}
$db->close();
}
echo json_encode($output);
exit();
?>