2007-06-23

L'oggetto XMLHttpRequest - L2

Oggi vediamo qualche caratteristica dell'oggetto che sta alla base della tecnologia AJAX, di cui abbiamo parlato il mese scorso.
Ricorderete che viene usato col linguaggio Javascript perché in grado di passare al server un link alla routine che vogliamo sia eseguita e di ritornare il risultato al client, di solito andando a riempire un contenitore.
Bene, l'oggetto è supportato da tutti i browser moderni: Internet Explorer dalla versione 5, Safari dalla 1.2, Firefox dalla 1, Opera dalla 8. il problema più simpatico è la creazione dell'oggetto: infatti sembra quasi che ogni browser la pensi in modo diverso... Infatti, mentre per Mozilla e derivati il comando è sempre lo stesso, per Explorer bisogna usare un ActiveX e dipende dalla versione. Tanto per dare l'idea:

oggetto = new XMLHttpRequest (); // Firefox, Opera, Safari

// uno dei seguenti funzionerà con Explorer:
oggettoIE = new ActiveXObject ("Msxml2.XMLHTTP");
// oppure
oggettoIE = new ActiveXObject("Microsoft.XMLHTTP");

Allora è d'uso tra i programmatori un metodo d'urto: proviamo a crearlo; se funziona siamo a posto, se no proviamo un altro metodo! Poco elegante ma semplice; il tutto viene fatto sfruttando i comandi try /catch, che permettono di provare del codice ed eseguirne dell'altro in caso di errore. Supponendo di aver definito la variabile oggetto, il pezzo di codice sarà qualcosa sul genere di:
try
{
oggetto = new XMLHttpRequest ();
alert("creato! Siamo su Firefox, Opera o Safari");
}
catch (e) //se siamo qui l'oggetto non è stato creato
{
try
{
oggetto = new ActiveXObject ("Msxml2.XMLHTTP");
alert("Ehi! Siamo su Explorer prima versione!");
}
catch (e) //non ha di nuovo funzionato!
{
try
{
oggettoIE = new ActiveXObject("Microsoft.XMLHTTP");
alert("Wow! Explorer, seconda versione.");
}
catch (e) //peggio! Abbiamo un browser vecchio!
{
alert("mi spiace! Niente Ajax");
}
}
}
Potete provare questa funzione nel vostro browser per vedere se potete usarlo in AJAX: partite da un normale file html e aggiungete questo codice tra i tag <script> all'interno del <body>.
Nota: il funzionamento si basa ovviamente sul javascript e sulla gestione degli errori: se una routine non esiste, il chiamarla genererà un errore che posso gestire provando un altro metodo. Non pensate però di simulare un browser non compatibile disabilitando iL javascript: il browser semplicemente salterà tutto il contenuto all'interno dei tag <script>! In altre parole, per vedere l'ultimo messaggio dovete proprio avere un browser non compatibile!
Buon divertimento!

2 commenti:

phoenix ha detto...

si, funziona...
all' inizio non avevo letto la fine del post ed ho provato a disabilitare javascript per simulare un browser non compatibile: quando aprivo la pagina con lo script, non usciva niente...
poi ho letto la fine del tuo post ed ho capito!

P.S.: ma gli altri browser diversi da IE, Firefox, Opera e Safari non supportano AJAX?

MassimoM ha detto...

In genere gli altri browser partono da "costole" di quelli più conosciuti: SeaMonkey parte da Mozilla, per esempio. Quindi se aggiornati dovrebbero avere le stesse caratteristiche di base... o così penso :-)