PHP: gestire il formato JSON in AJAX

PHP: gestire il formato JSON in AJAX

In PHP possiamo gestire il formato JSON di AJAX con relativa semplicità.

Sostanzialmente ci occorrono questi componenti:

  1. dei dati sotto forma di un array associativo
  2. l'header HTTP Content-Type impostato su application/json
  3. 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();
?>

Torna su