Tutorial PHP Ajax con esempio

⚡ Riepilogo intelligente

Ajax in PHP permette a una pagina web di scambiare piccole quantità di dati con il server e di aggiornare parte della pagina senza un ricaricamento completo. Questa guida illustra un framework interattivo, spiegando l'approccio classico con XMLHttpRequest e la moderna alternativa con l'API Fetch.

  • 🔄 Cos'è Ajax: Ajax, asincrono JavaScript e XML, aggiornano parte di una pagina scambiando dati con il server senza un aggiornamento completo.
  • ⚡ Perché usarlo: Ajax offre funzionalità avanzate, simili a quelle delle applicazioni desktop, come il completamento automatico, la convalida in tempo reale e i menu a tendina dipendenti.
  • ️ Cliente e server: JavaLo script viene eseguito nel browser e richiama uno script PHP, che restituisce solo i dati necessari per aggiornare la pagina.
  • 🔍 Ricerca diretta: Un gestore onkeyup invia ogni pressione di un tasto a uno script PHP che restituisce istantaneamente i nomi dei framework corrispondenti.
  • 📜 XMLHttpRequest: L'approccio classico crea un oggetto XMLHttpRequest e legge responseText al completamento della richiesta.
  • 🆕 API di recupero: Il codice moderno sostituisce XMLHttpRequest con la funzione fetch basata su promise per ottenere richieste più pulite e leggibili.
  • 🤖 Assistenza AI: Gli strumenti di intelligenza artificiale possono convertire il vecchio codice XMLHttpRequest in fetch o axios e aiutare a eseguire il debug delle richieste Ajax non riuscite.

PHP Ajax

Cos'è l'Ajax?

AJAX sta per Asincrono JavaCopione e XML. È una tecnologia che riduce le interazioni tra server e client. Lo fa aggiornando solo una parte di una pagina web anziché l'intera pagina. Le interazioni asincrone vengono avviate da JavaScript. Lo scopo di AJAX è quello di scambiare piccole quantità di dati con il server senza ricaricare la pagina.

JavaCopione è un linguaggio di scripting lato client. Viene eseguito lato client dai browser web che supportano JavaScript. JavaIl codice script funziona solo nei browser che hanno JavaScript abilitato.

XML è l'acronimo di Extensible Markup Language. Viene utilizzato per codificare i messaggi in formati leggibili sia dagli esseri umani che dalle macchine. È simile all'HTML ma consente di creare tag personalizzati. Per maggiori dettagli su XML, consultare l'articolo su XML.

Perché usare AJAX?

  • Consente lo sviluppoping Applicazioni web ricche e interattive, proprio come le applicazioni desktop.
  • La validazione può essere eseguita mentre l'utente compila un modulo, senza inviarlo. Ciò può essere realizzato tramite il completamento automatico. Le parole digitate dall'utente vengono inviate al server per l'elaborazione e il server risponde con parole chiave corrispondenti a quanto inserito dall'utente.
  • Può essere utilizzato per popolare un menu a tendina in base al valore di un altro menu a tendina.
  • È possibile recuperare i dati dal server e aggiornare solo una parte specifica di una pagina senza caricare l'intera pagina. Questo è molto utile per le parti di pagine web che caricano elementi come:
    • tweets
    • Commenti
    • Utenti che visitano il sito e dati simili in tempo reale.

Come creare un'applicazione PHP Ajax

Creeremo una semplice applicazione che consenta agli utenti di cercare i framework PHP MVC più diffusi.

La nostra applicazione avrà una casella di testo in cui gli utenti digiteranno i nomi dei framework.

Utilizzeremo quindi AJAX per cercare una corrispondenza e visualizzeremo il nome completo del framework appena sotto il modulo di ricerca.

Passaggio 1) Creazione della pagina indice

index.php

<html>

<head>

<title>PHP MVC Frameworks - Search Engine</title>

<script type="text/javascript" src="auto_complete.js"></script>

</head>

<body>

<h2>PHP MVC Frameworks - Search Engine</h2>

<p><b>Type the first letter of the PHP MVC Framework</b></p>

<form method="POST" action="index.php">

<p><input type="text" size="40" id="txtHint" onkeyup="showName(this.value)"></p>

</form>

<p>Matches: <span id="txtName"></span></p>

</body>

</html>

QUI,

  • "onkeyup="showName(this.value)"" esegue il file JavaLa funzione script showName viene visualizzata ogni volta che viene premuto un tasto nella casella di testo. Questa funzione è chiamata completamento automatico.

Passaggio 2) Creazione della pagina dei framework

frameworks.php

<?php

$frameworks = array("CodeIgniter","Zend Framework","Cake PHP","Kohana") ;

$name = $_GET["name"];

if (strlen($name) > 0) {

$match = "";

for ($i = 0; $i < count($frameworks); $i++) {

if (strtolower($name) == strtolower(substr($frameworks[$i], 0, strlen($name)))) {

if ($match == "") {

$match = $frameworks[$i];

} else {

$match = $match . " , " . $frameworks[$i];

}

}

}

}

echo ($match == "") ? 'no match found' : $match;

?>

Passaggio 3) Creazione dello script JS

auto_complete.js

function showName(str){

if (str.length == 0){ // exit function if nothing has been typed in the textbox

document.getElementById("txtName").innerHTML=""; // clear previous results

return;

}

if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp=new XMLHttpRequest();

} else {// code for IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

xmlhttp.onreadystatechange=function() {

if (xmlhttp.readyState == 4 && xmlhttp.status == 200){

document.getElementById("txtName").innerHTML=xmlhttp.responseText;

}

}

xmlhttp.open("GET","frameworks.php?name="+str,true);

xmlhttp.send();

}

QUI,

  • L'istruzione "if (str.length == 0)" verifica la lunghezza della stringa. Se è 0, il resto dello script non viene eseguito.
  • “if (window.XMLHttpRequest)…” Le versioni 5 e 6 di Internet Explorer utilizzano ActiveXObject per l'implementazione AJAX. Altre versioni e browser come Chrome e Firefox Utilizziamo XMLHttpRequest. Questo codice garantisce che la nostra applicazione funzioni sia in Internet Explorer 5 e 6 che nei browser moderni.
  • “xmlhttp.onreadystatechange=function…” verifica se l’interazione AJAX è completa e lo stato è 200, quindi aggiorna lo span txtName con i risultati restituiti.

Passaggio 4) Testare la nostra applicazione PHP Ajax

Supponendo che tu abbia salvato il file index.php in phptuts/ajax, vai al URL http://localhost/phptuts/ajax/index.php

Test della nostra applicazione PHP Ajax

Digita la lettera C nella casella di testo. Otterrai i seguenti risultati.

Test della nostra applicazione PHP Ajax

L'esempio sopra riportato illustra il concetto di AJAX e come può aiutarci a creare applicazioni ricche e interattive.

AJAX moderno con l'API Fetch

L'oggetto XMLHttpRequest menzionato sopra funziona ancora, ma la sua versione ActiveXObject per le vecchie versioni di Internet Explorer non è più necessaria. I browser moderni offrono l'API Fetch basata sulle promise, che effettua la stessa richiesta con molto meno codice.

function showName(str) {
    if (str.length === 0) {
        document.getElementById("txtName").innerHTML = "";
        return;
    }
    fetch("frameworks.php?name=" + encodeURIComponent(str))
        .then(response => response.text())
        .then(text => {
            document.getElementById("txtName").innerHTML = text;
        });
}

Questa versione svolge la stessa funzione: invia il testo digitato a frameworks.php e inserisce la risposta nello span txtName. Utilizza inoltre encodeURIComponent per codificare in modo sicuro l'input e la sua catena di promise è facilmente estendibile con la gestione degli errori tramite un blocco catch.

DOMANDE FREQUENTI

Una richiesta sincrona blocca il browser finché il server non risponde, congelando la pagina. Una richiesta asincrona viene eseguita in background, quindi la pagina rimane reattiva e si aggiorna quando i dati arrivano. Ajax utilizza il modello asincrono.

Con `fetch`, passa un secondo argomento che imposta il metodo a `POST` e un corpo, quindi leggi `$_POST` in PHP. Con `XMLHttpRequest`, chiama `open('POST', url)`, imposta l'intestazione `Content-Type` e invia i dati codificati.

CORS, Cross-Origin Resource Sharing, blocca le richieste del browser a un dominio diverso a meno che quel server non invii l'intestazione Access-Control-Allow-Origin corretta. Aggiungi l'intestazione sul lato PHP o chiama una same-origin URL per risolverlo.

Sì. Incolla il codice XMLHttpRequest e l'IA può riscriverlo utilizzando l'API fetch basata su promise o axios, aggiungere la gestione degli errori e mantenere lo stesso comportamento. Testa il risultato, poiché la gestione della risposta è leggermente diversa.

Sì. Condividi il codice della richiesta e la console del browser o l'errore di rete e l'IA può individuare un errore URLSe si verifica un blocco CORS, un parametro mancante o un errore del server, suggerisci la soluzione da provare.

Riassumi questo post con: