Inventato da Jessie James Garret (che ha scritto anche l’introduzione di questo libro), AJAX (si pronuncia ‘agiax’) è un acronimo che sta per “Asynchronous Javascript and XML”, e rappresenta una tecnologia utilizzata per fornire maggiore dinamicità alle applicazioni web, evitando di dover ricaricare completamente le pagine ad ogni clic dell’utente o ad ogni modifica intervenuta. Malgrado il nome sia un’invenzione recente, questa tecnica fa uso abbondante di tecnologie e linguaggi già presenti da tempo ed utilizzati da parecchi siti web: Javascript per “rinfrescare” l’interfaccia con maggiore velocità di quanto fatto finora, CSS e Xhtml per la visualizzazione dei dati, e XML per lo scambio degli stessi tra browser e server remoto. Siti quali Google Maps e Google Earth (ma ve ne se sono tanti altri), sono stati i pionieri nell’uso di Ajax, e la loro maggiore velocità o “responsività” come si dice ora (ovvero il fatto di reagire più velocemente al clic dell’utente) è dovuto appunto al fatto che non devono ricaricare ogni volta la pagina, attendendola dal server, ma ne modificano solo la parte “incriminata”, lasciando inalterato tutto il resto. Basta fare un giro su http://maps.google.com per farsene un’idea. Questa tecnologia ha anche il vantaggio di essere cross-piattforma, ovvero utilizzabile sia in ambito .NET che in ambito Java o open source in generale, e questo ne aumenta considerevolmente la diffusione. L’autore di questo libro è più orientato alla piattaforma J2EE, piuttosto che .NET, e gli esempi che riporta riguardano maggiormente la piattaforma Java. Ciò non toglie, comunque, che l’utilità dei trucchi sia interessante per tutti. Il titolo originale del libro, “Ajax hacks”, illustra bene il tipo di esempi riportati. Trucchetti, spesso poco ortodossi, per risolvere i maggiori problemi che può incontrare chi sviluppa pagine web. Un esempio all’indice dettagliato (che riporto in fondo alla recensione) da’ subito un’idea delle numerossime situazioni affrontate, praticamente tutto il ventaglio dei problemi di questo tipo. L’autore, nella prima parte, illustra le basi di questa tecnologia, ed ogni trucco è preceduto da una breve spiegazione teorica dei concetti affrontati. Bisogna tenere presente però che si presuppone un lettore esperto, che abbia già avuto modo di usare Javascript, CSS, XML e Html dinamico, meglio ancora se abbia già avuto modo di impratichirsi con le basi di Ajax (con altri libri o con prove personali). I primi tre capitoli (basi, form web e validazione) direi che coprono l’80% dei casi in cui Ajax potrebbe tornare utile. I successivi capitoli trattano casi più particolari, o che fanno uso di librerie specializzate (Prototype e Rico, librerie javascript open source), o che si applicano ad ambienti diversi (Ruby on Rails). Queste parti saranno meglio apprezzate da chi proviene da queste piattaforme. Il linguaggio è chiaro, diretto, e la traduzione è ben fatta. Il codice è ben scritto, ben indentato, e senza errori (perlomeno in quelli che ho testato). Questo libro è raccomandabile per i lettori che già conoscano Ajax, e come perfetto supplemento a libri base su tale argomento.
A questa pagina è presente la scheda dettagliata del libro, compreso l’indice in formato Pdf (non è però presente, purtroppo, un estratto).
Pro
Ricchissima raccolta di trucchi per applicare Ajax in diverse situazioni e per risolvere parecchi casi. Per chi ha delle basi di questa tecnologia e vuole trovare esempi per come applicarla, questo è il libro perfetto. Ottimo il lavoro svolto dalla Tecniche Nuove per quanto riguarda la traduzione e l’impaginazione.
Contro
La predilezione dell’autore per l’ambiente Java (e correlati) lo rende poco adatto a chi sviluppa in ASP.NET.
Voto complessivo: 8,5/10
Livello: Avanzato
Sommario
Prefazione
Crediti
Introduzione
Cap. 1 – Le basi di Ajax
1 – Riconoscimento dei browser tramite l’oggetto request
2 – Uso dell’oggetto request per inviare al browser una richiesta in Post
3 – Uso di una libreria personalizzata per gestire l’oggetto XMLHttpRequest
4 – Ricezione dei dati in formato XML
5 – Uso di stringhe di testo
6 – Ricezione di dati in formato numerico
7 – Ricezione dei dati in formato JSON
8 – Gestione degli errori generati dall’oggetto request
9 – Esame del contenuto della richiesta http
10 – Generazione di messaggi formattati tramite CSS
11 – Formattazione dinamica di un messaggio
Cap. 2 – Form Web
12 – Invio al server di valori testuali e campi textarea senza ricaricare la pagina
13 – Inserimento in campi di input e in textarea di valori provenienti dal server
14 – Invio al server dei valori delle liste select
15 – Generazione dinamica di una nuova select con i dati caricati dal server
16 – Modifica di una lista select già esistente
17 – Invio al server dei valori dei checkbox
18 – Generazione dinamica di un nuovo gruppo di checkbox con i dati provenienti dal server
19 – Aggiornamento di checkbox esistenti con i dati provenienti dal server
20 – Modifica di liste tramite risposte http
21 – Invio ad un componente server di valori nascosti
Cap. 3 – Validazione
22 – Verifica di presenza di campi vuoti nelle form
23 – Validazione della sintassi degli indirizzi mail
24 – Validazione dell’unicità dei nomi utente
25 – Validazione dei numeri di carta di credito
26 – Validazione dei codici di sicurezza delle carte di credito
27 – Validazione dei codici postali
Cap. 4 – Hack per sviluppatori esperti
28 – Accesso alle API di Google Maps
29 – Uso delle API di Google Maps per richiedere un oggetto
30 – Uso di Ajax per combinare Google Maps con Yahoo! Maps
31 – Visualizzazione di un feed XML di Weather.com
32 – Combinazione delle mappe di Yahoo! con i dati di GeoURL
33 – Debug in Firefox dei tag generati da Ajax
34 – Ricerca di un codice postale
35 – Creazione di bookmarklet facilmente gestibili
36 – Memorizzazione persistente sul client dei dati utilizzati dalle applicazioni Ajax
37 – Controllo della cronologia del browser tramite gli iframe
38 – Invio al server dei valori dei cookie
39 – Uso di XMLHttpRequest per estrarre da una pagina il prezzo di una risorsa energetica
40 – Invio di posta elettronica tramite XMLHttpRequest
41 – Determinazione delle impostazioni locali del browser
42 – Creazione di un aggregatore RSS
Cap. 5 – Direct Web Remoting (DWR) per Java Jocks
43 – Integrazione di DWR in una applicazione web Java
44 – Uso di DWR per popolare una lista select con i dati di un array Java
45 – Uso di DWR per popolare una select con gli elementi di una Map Java
46 – Uso di DWR per inserire in una pagina il contenuto di un array associativo Java
47 – Uso di DWR per popolare elenchi numerati da Array Java
48 – Accesso da JavaScript per oggetti Java generici
49 – Uso di DWR per chiamare da JavaScript oggetti predefiniti Java
Cap. 6 – Uso di Ajax con le librerie Prototype e Rico
50 – Uso degli strumenti di Prototype nelle applicazioni Ajax
51 – Aggiornamento da server del contenuto di elementi HTML
52 – Monitoraggio del contenuto dei campi delle form
53 – Uso di Rico per aggiornare più elementi con una stessa risposta Ajax
54 – Creazione di una interfaccia utente Drag-and-Drop
Cap. 7 – Lavorare con Ajax e Ruby on Rails
55 – Installazione di Ruby on Rails
56 – Uso di Rails per monitorare le chiamate remote
57 – Uso nelle applicazioni Rails di codice JavaScript arbitario
58 – Generazione dinamica di una lista di selezione in un template Rails
59 – Identificazione delle richieste provenienti da Ajax
60 – Generazione dinamica di liste di selezione utilizzando dati estratti da un database
61 – Invio periodico di una richiesta remota
62 – Visualizzazione dinamica del contenuto di XMLHttpRequest
Cap. 8 – Uso della libreria JavaScript script.aculo.us
63 – Integrazione degli effetti speciali di script.aculo.us nelle applicazioni Ajax
64 – Creazione di una tabella di login che vibra nel caso vengano inseriti dati errati
65 – Creazione di un campo ad autocompletamento tramite script.aculo.us
66 – Abilitazione alla modifica da parte degli utenti del testo di una pagina web
67 – Creazione di una form che scompare quando viene inviata al server
Cap. 9 – Opzioni ed efficienza
68 – Ripristino del comportamento del bottone indietro del browser nelle applicazioni Ajax
69 – Gestione dei bookmark e del bottone indietro del browser tramite RSH
70 – Impostazione di un limite temporale di validità per le richieste http
71 – Migliorare manutenibilità, prestazioni e affidabilità di applicazioni complesse
72 – Offuscamento del codice JavaScript e Ajax
73 – Uso di un elemento script dinamico per effettuare richieste ai web service
74 – Configurazione di Apache per i risolvere i problemi cross-domain
75 – Implementazione di un motore di ricerca all’interno del browser
76 – Uso di markup dichiarativo tramite XForm invece che di programmazione procedurale
77 – Implementazione di una cache lato client
78 – Creazione di un campo ad autocompletamento
79 – Visualizzazione dinamica di approfondimenti
80 – Uso di stringhe e di array per generare dinamicamente codice HTML
Indice analitico