PHP: riconoscere e gestire le richieste AJAX

AJAX e PHP interagiscono molto bene insieme. L'unico problema che ha PHP è riconoscere quando una richiesta viene fatta tramite AJAX. Per questo motivo tutti i framework che usano AJAX (compreso jQuery), impostano l'header HTTP_X_REQUESTED_WITH nelle loro richieste. Vediamo come sfruttare questa caratteristica con PHP, fornendo al contempo un'alternativa qualora non fosse supportata dal server.

HTTP_X_REQUESTED_WITH

La verifica da fare è la seguente:


if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
  
    // gestisce la richiesta AJAX
    
}

// altrimenti continua normalmente

La parte importante della verifica è la gestione dei dati in AJAX. Per esempio si può memorizzare un output da restituire al client e quindi uscire dallo script:


$content = get_content();

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {

  // gestisce la richiesta AJAX
  
  die($content);
}

// altrimenti continua normalmente

L'alternativa

L'alternativa è usare un parametro aggiuntivo da allegare alla richiesta:


$ajax = $_POST['ajax'];
if(isset($ajax) && $ajax == 'on') {

	// gestisce la richiesta AJAX

}
// altrimenti continua normalmente

Ovviamente se usate un framework dovreste utilizzare le routine di gestione AJAX del vostro framework e quasi sicuramente non avrete bisogno di ulteriori verifiche, che in genere si applicano solo quando state scrivendo il codice da zero.