Cos’è Ajax:

Ajax o Asyncronous JavaScript and XML non è facilmente descrivibile, è un nuovo sistema di pensare il web, di offrire interfacce utente più usabili grazie all’ausilio delle tecnologie ormai d’uso comune, fondanti AJAX ossia Javascript, CSS e XML.
Con Ajax è possibile aggiornare singole porzioni di pagine web senza doverle ricaricare, è possibile offrire form in grado di validare i dati inseriti e di auto-completare quanto digitato dall’utente, tutto questo vi sembra fantascienza? Dovreste vedere cos’altro si può fare.

Molti portali e grandi aziende hanno puntato negli ultimi anni su questa innovazione tecnologica, il più visibile tra questi attori è Google, che ha fatto di Ajax il suo cavallo di battaglia, ad esempio, l’intera interfaccia di GMail è gestita in AJAX e attraverso un complicato sistema di frame e javascript.

Inoltre sempre Google offre ai suoi utenti la possibilità di effettuare delle ricerche con dei suggerimenti, il servizio si chiama Google Suggest, in poche parole mentre voi digitate la parola da ricercare, l’interfaccia di Google vi offre dei suggerimenti che riguardano i possibili risultati ottenuti e la rilevanza, rispetto alla chiave di ricerca, di ciascuno di questi.

Google non è davvero l’unico, ci sono molti altri esempi, ma non mi dilungherò oltre nei case studies.

Cos’è una richiesta Asincrona:

Quando carichiamo una pagina web tutti i suoi elementi vengono caricati in modo sequenziale uno dopo l’altro, se uno di questi elementi esegue un’operazione lunga allora il caricamento della pagina viene sospeso fintanto che il lavoro non è terminato e in seguito viene completato.
Quello appena descritto è il comportamento standard delle pagine web che è definito sincrono, quindi quello che è successo fin’ora � che se volevamo validare i campi di un form dovevamo inviare il form e in seguito restituire gli eventuali errori, ma…

Come abbiamo detto AJAX consente un comportamento asincrono, con questo si intende la capacità di un elemento della pagina che deve eseguire un lavoro (anche lungo) di non interrompere il normale caricamento o flusso di lavoro, in questo modo è possibile fornire all’utente la pagina completamente caricata con i suoi elementi fondamentali, e man mano che l’utente si sofferma nella pagina caricare altri elementi o effettuare operazioni di qualunque altro tipo.
Tornando quindi al nostro esempio della validazione del form, ci sarà possibile una volta che l’utente ha completato un campo da validare, inviare al server (in modo del tutto trasparente, ossia senza che l’utente se ne accorga) il valore di quel campo e restituire praticamente in tempo reale gli eventuali errori, senza dover ricaricare la pagina.

Cos’è XMLHttpRequest:

Come funziona tutto questo? Alla base di tutto quello che abbiamo fin qui detto risiede XMLHttpRequest, un’oggetto JavaScript in grado di effettuare le richieste sincrone o asincrone verso il server.

Non è mia intenzione addentrarmi nelle caratteristiche e nella sintassi di quest’oggetto, per questi aspetti vi rimando alle documentazioni tecniche che trovate in internet, un buon punto di partenza è
http://xulplanet.com/references/objref/XMLHttpRequest.html oppure potreste aspettare i prossimi post sull’argomento :-)

Vorrei invece mettere in risalto il fatto che attualmente non esiste ancora uno standard per scrivere applicazioni AJAX, esistono infatti diverse implementazioni a seconda del browser e della piattaforma, quindi al momento lo sforzo maggiore che viene compiuto nel cimentarsi con AJAX è proprio quello di cercare di rendere gli script cross browser.

La sicurezza in AJAX:

Un ultimo aspetto che vorrei descrivere di AJAX riguarda la sicurezza, difatti se tra voi lettori, ci fosse qualche maniaco di sicurezza, con crisi di persecuzione come me, potrebbe subito chiedersi quali sono le possibili falle di sicurezza che un sistema come questo, nel quale il codice viene eseguito all’insaputa dell’utente, è in grado di aprire.

Ebbene anche a questo si è pensato, ed è stato adottato concettualmente lo stesso schema di sicurezza delle applet java, la cui esecuzione è limitata all’area di memoria nella quale vengono eseguite, così per ajax è stato imposto il limite del dominio, ossia le richieste sincrone o asincrone che siano, debbono essere limitate al dominio nel quale viene caricata la pagina, in questo modo non è possibile fare richieste ad un server remoto che potrebbe scaricare sul nostro computer codice malevolo.

Se da una parte questa limitazione ci garantisce da brutte sorprese, dall’altra però limita fortemente le possibilità di questo sistema, impedendoci ad esempio di usufruire dei molti web services messi a disposizione dai siti esterni al nostro, per questa ragione sono state introdotte diverse tecniche che fanno uso di proxy in grado di incaricarsi delle richieste verso siti remoti e che consentono di superare il problema.

Pro e Contro AJAX:

Per quanto riguarda gli aspetti positivi sono sicuramente da menzionare:

  • Il traffico minimo: solo le parti coinvolte in un cambiamento vengono aggiornate
  • Accessibilità
  • Limitare le distrazioni con continui caricamenti
  • Interazione migliorata
  • In una parola sola Usabilità

Ci sono però alcuni aspetti anche negativi come:

  • Maggiore complessità nello sviluppo delle applicazioni
  • Inesistenza di uno standard per l’uso di queste tecnologie
  • Difficoltà di garantire agli utenti non in grado di sfruttare javascript perché utilizzano browser incompatibili un’esperienza comunque di qualità sul sito
  • Impossibilità di gestire la cronologia delle azioni eseguite
  • Impossibilità per i motori di ricerca di ricerca di indicizzare i dati gestiti tramite javascript

Spero vivamente che l’introduzione ad AJAX risulti chiara, esistono ancora molti aspetti che però debbono essere trattati, e chissà magari li tratterò più in la, di sicuro a breve comincerò a pubblicare esempi ajax che sicuramente aiuteranno a capire come muoversi in quello che è il futuro del web, non mi rimane che dirvi stay tuned e vi lascio indicandovi la pagina di Wikipedia che parla di AJAX:
http://it.wikipedia.org/wiki/AJAX