Tutti per uno… XMLHttpRequest per tutti!

Un trattamento XML: AJAX

A questo punto proviamo a capire come e quando è opportuno affidarsi alla metodologia AJAX per il trattamento delle richieste del server.

E’ conveniente utilizzare tale metodologia quando le informazioni ricevute sono di tipo XML. Dati ottenuti da un database, risposta di un webservice, strutturazione formale secondo determinate regole (XML validato secondo una specifica DTD).

Facciamo un esemio molto banale. Sul server abbiamo un file di formato XML chiamato rubrica.xml predisposto secondo la seguente struttura:

<?xml version="1.0" encoding="ISO-8859-1"?>
<rubrica>
        <nominativo>
                <nome>Diego</nome>
                <cognome>La Monica</cognome>
                <telefono>3337235382</telefono>
        </nominativo>
</rubrica>

Questa struttura molto semplice riporta 3 informazioni per ciascun nominativo in rubrica.

Con il codice che segue riusciremo ad ottenere l’informazione richiesta:

function elabora_xml(buffer){
        alert(buffer);
}

var metodo = 'GET';
var url = 'http://diegolamonica.info/tutorials/examples/xmlhttprequest/rubrica.xml';
var parametri = '';
var funzione_ritorno = 'elabora_xml(%%BUFFER%%)';

SendRequest(metodo, url, parametri, funzione_ritorno); 

Come potete notare dallo script sopra menzionato elabora_xml è la funzione che si preoccuperà di gestire per intero il codice XML ritornato che è presente in un unico stream denominato buffer.

Provando ad eseguire questo esempio, avremo come risposta un messaggio che ci presenterà per intero il codice XML della pagina rubrica.xml.

La cosa interessante che potrete notare è la riga:

var funzione_ritorno = 'elabora_xml(%%BUFFER%%)'; 

Come potrete notare, la funzione è stata definita con un codice strano %%BUFFER%% che verrà interpretato dalla funzione SendRequest e sostituito con il risultato della risposta del server.

Questo ci consentirà quindi di poter personalizzare il comportamento della funzione di ritorno in infiniti modi.

Nell’esempio che segue invece andremo a mostrare solo il numero di telefono dei nominativi che iniziano per un dato cognome facendo l’elaborazione di filtro lato client. 

function elaboraXML(value, buffer){
        if (window.ActiveXObject){
                // codice per Internet Explorer
                var doc=new ActiveXObject("Microsoft.XMLDOM");
                doc.async="false";
                doc.loadXML(buffer);
        }else{
                // codicee per Mozilla, Firefox, Opera, etc.
                var parser=new DOMParser();
                var doc=parser.parseFromString(buffer,"text/xml");
        }
        var nodi = doc.getElementsByTagName('nominativo');
        for(var i=0; i< nodi.length; i++){
                var nodo_cognome = nodi[i].getElementsByTagName('cognome');
                var cognome = nodo_cognome[0].firstChild.nodeValue;
                if (cognome.substr(0,value.length) == value){
                        var nodo_nome = nodi[i].getElementsByTagName('nome');
                        var nome = nodo_nome[0].firstChild.nodeValue;
                        var nodo_telefono = nodi[i].getElementsByTagName('telefono');
                        var telefono = nodo_telefono[0].firstChild.nodeValue;
                        buffer = nome + ' ' + cognome + ' ' + telefono;
                        return buffer;
                }
        }
        return 'nessuna corrispondenza in archivio';
}

var metodo = 'GET';
var url = 'http://diegolamonica.info/tutorials/examples/xmlhttprequest/rubrica.xml';
var parametri = '';
var funzione_ritorno = 'elabora_xml('La Monica', %%BUFFER%%)';
SendRequest(metodo, url, parametri, funzione_ritorno);

Osservate bene che anche il codice per l’inizializzazione dell’XML: è, come al solito, differente se si usa Internet Explorer o un altro Browser. Poi fortunatamente il resto non cambia.

%d blogger hanno fatto clic su Mi Piace per questo: