Sto lavorando ad un progetto per un cliente ed ho deciso per alcune form di utilizzare tecniche ajax. Per la precisione, visto che la complessità delle funzioni a me necessarie non è elevatissima mi sono limitato alla libreria SACK per la trasmissione dei dati affiancata da Script.aculo.us per quel che riguarda le animazioni utili alla visualizzazione degli stessi (faccio un discreto uso/abuso delle tecniche di yellow fading).
Devo dire che ne è venuto fuori qualcosa di carino e soprattutto utile per alcuni controlli decisamente noiosi da fare lato server, ricaricare ad esempio una pagina da 100k (immagini incluse) per un username già esistente mi pare esagerato.
Per andare un po’ più sullo specifico ho delegato il controllo dei dati immessi in input, la creazione dinamica di form e la visualizzazione di ricerche a SACK, limitandomi a gestire con php il solo render delle pagine.
E fin qui pare tutto bello, quindi perchè i dubbi del titolo?
Perchè come avevo espresso tempo fa su qualche ML (non trovo i riferimenti, sorry) dopo un rapido e per niente approfondito test, quando ancora ajax era hype e non esisteva il mare di librerie presenti oggi, questa tecnologia ha un grosso difetto… dipende interamente dall’implementazione e dall’utilizzo di js all’interno del browser. E tale implementazione per molti browser datati anche solo 2 anni fa schifo.
Soprassedendo al fatto che metodi come getElementByID
non funzionino ovunque, ma che comunque il problema sia facilmente aggirabile tramite funzioncine di riconoscimento browser, quello che più mi infastidisce è il supporto fornito alla funzionalità alla base di ajax, XMLHttpRequest
.
La lista non è rassicurante Konqueror < 3.4, Safari < 1.2, Internet Explorer 5.2 (mac) e 5.0.x (winz) ed Opera < 7.6. non la supportano a pieno o ne hanno un'implementazione buggata. Il che si traduce in una sola cosa, rifare il lavoro due volte se si vogliono supportare browser un poco vecchi, browser che in Italia sono utilizzati in moltissime aziende in quanto aggiornare il software non è mai una priorità.
Ah, già… E se js è disabilitato? Stesso discorso, tutti i controlli lato client si vanno a far benedire e si torna ai vecchi e sani GET e POST passati direttamente dalla action della form ad una nuova pagina…
Una possibile soluzione sarebbe quindi quella di creare delle form normali e di appiccicarci dei comportamenti ajax solo se questi sono pienamenti supportati. I quali comportamenti a loro volta andrebbero a richiamare gli stessi script che invocherebbe la pagina normalmente ma passando 2/3 parametri in più per dire che si tratta di richiesta basata su XMLHttpRequest
. Un discorso per niente banale, e da approfondire accuratamente se non vogliamo fare come 37Signal che per tagliare la testa al toro ha rimosso il supporto a tutti i browser datati da Basecamp.
ciuaz