Home / Blog / - -

jQuery Ajax: cos’è, quando usarlo e come?

di Giuseppe Maggi

Se usi Internet da un po’ di anni, forse ricorderai quando l’aggiornamento di una pagina web la ricaricava totalmente e, nota dolente, le connessioni del tempo non avevano la velocità di oggi. Poteva bastare la selezione di una voce in un menu a tendina per assistere al caricamento dell’intera pagina con lo scopo, magari, di aggiornare solo qualche campo di un form.

Poi tutto è cambiato. Ad un certo punto le pagine web hanno iniziato a ricaricarsi sempre meno e a sembrare molto più intelligenti oltre che intuitive. Toccavi un campo e di conseguenza si aggiornavano altre sezioni senza alcun bisogno di ridisegnare tutto il contenuto del browser. Passavi con il mouse da una parte e all’istante si apriva un’area a scomparsa che riportava tutta una serie di informazioni.

Il motivo di questo avanzamento improvviso della tecnologia non sta tanto nel linguaggio usato – diciamo che Javascript ha fatto sempre la sua parte – ma piuttosto nel modo in cui il dialogo tra client (il browser) ed il server (chi ti manda pagine web e dati) si è evoluto. La parola chiave di questa evoluzione è stata Ajax, il cuore di questa tecnologia e seppur oggi si lavori in modo differente è comunque importante conoscerne il funzionamento, vedremo quindi, in questa guida, come viene applicata e come una libreria fantastica (seppur ormai datata) chiamata jQuery sia stata in grado di facilitare il tutto.

Client, server e… Ajax

Il contesto di cui parliamo è il rapporto tra client e server. Il client potrebbe essere una qualsiasi applicazione ma in questo caso ci stiamo concentrando sul browser, un qualcosa perciò che riguarda ogni tipologia di utente. Questi i passaggi di una tipica connessione ad una pagina web:

  • Il browser invia la richiesta;
  • Il server elabora la risposta eseguendo script e programmi con un tipico linguaggio “lato server”: PHP, Java, Microsoft .NET, Python, Node.js e molti altri;
  • Alla fine dell’esecuzione lato server, è stata prodotta una risposta composta da tutto ciò che un browser può interpretare ed eseguire: HTML, CSS, Javascript e risorse varie;
  • Il server invia la risposta al browser che la interpreta e ne mostra i risultati all’utente. Il codice Javascript al suo interno rappresenterà l’intelligenza attiva di quella pagina, ciò che gestirà l’interazione utente.

Così è sempre stato ed ogni volta che una pagina ha bisogno di richiedere elaborazioni o dati presenti sul server deve necessariamente avviare una nuova richiesta.

Ciò che Ajax ha portato di nuovo è che tali richieste possono essere eseguite in background ossia senza che l’utente si accorga di niente. In pratica, mentre l’utente sta tranquillamente leggendo i contenuti della pagina, compilando un form o facendo altro, la tecnologia Ajax è in grado di connettersi al server e senza alcun ricaricamento dell’interfaccia scaricare dati da usare per aggiornarla più o meno parzialmente. Va da sé che il guadagno in termini di interattività e dinamicità è grandissimo.

Per comprendere i capisaldi di questa tecnologia vediamo cosa significa Ajax. E’ l’acronimo di Asynchronous JavaScript and XML. Quindi la sua nascita scaturisce dall’incontro di tre fattori:

  • Asynchronous: in programmazione, si ha una richiesta asincrona quando il componente che l’ha inoltrata non resta bloccato in attesa di riceverne la risposta ma può proseguire con le proprie operazioni. Quando la risposta sarà pervenuta, verrà attivata una funzione che la gestirà. L’aspetto asincrono è proprio quello che permette l’azione di comunicazione “dietro le quinte” con il server;
  • JavaScript: su questo aspetto non serve spiegare molto ormai. Per attuare tali strategie un linguaggio lato client è assolutamente necessario;
  • XML: questo è il formato che si è affermato proprio per lo scambio di dati tra applicazioni. Ultimamente si è visto rubare terreno dal formato JSON (anche qui le lettere JS stanno per Javascript) ma è stato il cuore dell’avvento dei servizi web e di tutta la logica che porta a dialoghi automatici tra macchine e applicazioni.
» VUOI SAPERNE DI PIU’? VAI AL NOSTRO CORSO AJAX «

Quando usare Ajax: facciamo un esempio

Immaginiamo di avere due menu a tendina in una pagina web di cui il primo contiene le regioni d’Italia ed il secondo le province. L’utente deve indicare un indirizzo pertanto dovrà scegliere anche alcuni di questi elementi. Per evitare che vengano erroneamente selezionati dati non coerenti (ad esempio: come regione il Lazio e provincia Lecce) vogliamo fare in modo che al momento della selezione di una regione, il menu delle province mostri solo quelle appartenenti ad essa. Questo è un classico caso da interazione in background: l’utente seleziona come regione il Lazio e, senza alcun ricaricamento della pagina, totalmente in background, il browser invia al server una richiesta chiedendo “Quali sono le province del Lazio?”. La risposta del server sarà altrettanto dietro le quinte e porterà una sequenza di stringhe tipo [Roma, Frosinone, Latina, Rieti, Viterbo] che sarà usata per ripopolare il secondo menu a tendina.

Affinchè tutto possa funzionare perfettamente, è necessario che lo scambio di richieste e risposte sia velocissimo ma al giorno d’oggi ciò non è assolutamente un problema.

Come usare Ajax nello specifico?

In realtà, il server non deve cambiare granché per adattarsi a questo modo di lavorare: che siano in background o meno le richieste del client pervengono sempre allo stesso modo. Generalmente l’applicazione lato server disporrà di classiche API, magari in stile REST, per scambiare dati con software esterni.

Il client deve invece utilizzare apposite funzioni affiché possano essere svolte questo genere di operazioni. Diciamo che la nascita di Ajax si fa coincidere con la definizione di un oggetto, di nome XMLHttpRequest, che implementa tutto il suo meccanismo: invio di richieste (asincrone o eventualmente sincrone) ad un server , scambiando dati in XML, senza richiedere obbligatoriamente il ricaricamento della pagina web. In realtà, XMLHttpRequest è un’interfaccia di programmazione quindi può trovare applicazione in vari linguaggi. E’ stato infatti molto usato in Javascript ma potrebbe essere sfruttato anche in VBscript (il linguaggio derivato da Visual Basic per creare pagine con tecnologia ASP).

Il suo uso non è complesso e tra l’altro – didatticamente parlando – mostra passo passo come avviene una connessione al server. Non è il massimo tuttavia in quanto a produttività del programmatore e per questo, nel lavoro, ci si orienta verso alternative molto più sintetiche come le funzioni offerte da jQuery.

Per chi non lo conoscesse jQuery è una libreria che ha reso l’utilizzo di Javascript sintetico ed immediato. E’ riuscito così bene nella sua missione da diventare uno standard de facto nella stesura di pagine web. Infatti Javascript ha cambiato per sempre le vite degli esseri umani con il suo contributo di dinamicità ma il suo codice rischiava presto di diventare prolisso e frammentario. Da un lato ciò ha portato ad una serie di integrazioni con le versioni standardizzate che passano sotto il nome di ECMAScript, dall’altro ha visto l’insorgere di una serie di ottimi strumenti come appunto jQuery, nato nel 2006. Quest’ultimo dato ricorda che è praticamente coetaneo di Ajax e XMLHttpRequest pertanto un destino comune sembrava l’unica strada possibile.

La libreria jQuery ha un uso immediato. E’ necessario importarla nei propri progetti in una delle seguenti modalità:

  1. Con un download dal sito ufficiale https://jquery.com/;
  2. Ottenendolo con uno dei vari package manager e affini del mondo Javascript tipo npm, bower o yarn;
  3. Integrando una CDN (Content Delivery Network) nel codice delle proprie pagine web. Per chiarezza, ricordiamo che una CDN è una rete di server che rende ampiamente disponibile in Internet delle risorse molto richieste come potrebbe essere jQuery. Esistono servizi che offrono tale funzionalità e molte CDN sono offerte da grossi attori della Rete quali Microsoft e Google. Il loro utilizzo è particolarmente semplice in quanto consiste nell’indicazione di un singolo indirizzo web, quello cui fa capo la CDN per l’appunto. Va riportato in un tag script, nell’intestazione della pagina:
    <head>
    …
    <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
    …
    </head>
    

La libreria jQuery dispone di varie funzioni, molto comode, per gestire chiamate Ajax. Hanno tra loro una serie di aspetti in comune ma un fattore con cui bisogna prendere confidenza subito sono le funzioni di callback. Visto che le chiamate sono generalmente asincrone, riceveremo la risposta non subito ma quando sarà resa disponibile dal server, per questo dovremo indicare a quale funzione recapitare i dati scaricati sia in caso di errore sia di successo. Queste funzioni Javascript che passeremo alle richieste Ajax prendono appunto il nome di callback.

Tra gli strumenti messi a disposizione da jQuery possiamo citarne alcuni di maggior rilievo. La generica funzione ajax ammette una serie di parametri per poter perfezionare la richiesta sotto ogni aspetto. Può sembrare meno comoda delle prossime che nomineremo ma sicuramente è adatta ad ogni scopo. Per gestire esplicitamente richieste GET (quando in http leggiamo dati) e POST (quando inviamo dati ad un server per modificare il suo set informativo) possiamo usare rispettivamente le funzioni get e post che essendo chiaramente mirate richiedono meno parametri di ajax. Ancora più istantanea è la funzione load che assolve una delle principali incombenze affidate ad Ajax: scaricare in modalità GET un testo da un indirizzo web (spesso un endpoint delle API REST) per immetterlo immediatamente in un campo HTML della pagina web.

» VUOI SAPERNE DI PIU’? VAI AL NOSTRO CORSO AJAX «

Come si inizia? Facilissimo

Questa presentazione ha tratteggiato i fattori essenziali di jQuery Ajax: perché esiste, in cosa consiste e come usarlo. Ora non manca che la pratica. Saranno sufficienti un editor di testo, un browser e tanta voglia di scoprire come tutto ciò sia alla portata di chiunque. Le nostre pagine web, inizialmente così statiche, prenderanno vita, impareranno a dialogare con server e riceveranno informazioni costantemente aggiornate. Non solo saranno più intriganti, ma sembreranno acquisire un maggiore interesse in quanto riusciranno immediatamente a raccogliere dati di Borsa, news, oroscopi, previsioni meteo e tanto altro, basterà solo contattare i giusti provider.

Nel prossimo articolo vedremo nel dettaglio qualche esempio pratico, nel frattempo, se vuoi approfondire è disponibile un percorso di formazione online che parte dalle basi di Javascript all’uso completo di Ajax con jQuery. La strada è tracciata, basta seguirla: buono studio!