Codice completo

Listato 3. Richiesta verso il server per recuperare le informazioni

//ajax.js

...//
//La funzione si occupa di mostrare l'elemento DIVID'id'
function openBox(id){
    elemento="DIVID"+id  show(elemento);
    setLoading(elemento);
    caricaTesto(elemento,'actionservlet?op=getItem&iid='+id+'');
}

//Rendiamo l'elemento visibile
function show(elemento){
    elemento = prendiElementoDaId(elemento);
    elemento.style.display='block';
}

//Funzione di attesa, mostriamo un'immagine dinamica
function setLoading(elemento) {
    elemento = prendiElementoDaId(elemento);
    elemento.innerHTML = "<div class=\"waiting\"><img align=\"bottom\" src=\"./img/waiting.gif\"/>Loading...</div>";
}

//Funzione di caricamento testo, accetta una stringa contenente
//il nome di un file da leggere e l'elemento dove inserirlo


function caricaTesto(elemento,nomeFile) {
    // variabili di funzione
    var
    
    // assegnazione oggetto XMLHttpRequest
    ajax = assegnaXMLHttpRequest(),
    
    // assegnazione elemento del documento
    elemento = prendiElementoDaId(elemento),
    
    // risultato booleano di funzione
    usaLink = true;
    
    // se l'oggetto XMLHttpRequest non nullo
    if(ajax) {
        // il link al file non deve essere usato
        usaLink = false;
        
        // impostazione richiesta asincrona in GET
        // del file specificato

        ajax.open("get", nomeFile, true);
        
        // rimozione dell'header "connection" come "keep alive"
        ajax.setRequestHeader("connection", "close");
        
        // impostazione controllo e stato della richiesta
        ajax.onreadystatechange = function() {
            // verifica dello stato
            if(ajax.readyState === readyState.COMPLETATO) {
                // verifica della risposta da parte del server
                if(statusText[ajax.status] === "OK"){
                    // operazione avvenuta con successo
                    elemento.innerHTML = ajax.responseText;
                } else {
                    // errore di caricamento
                    elemento.innerHTML = "Impossibile effettuare l'operazione richiesta.<br />";
                    elemento.innerHTML += "Errore riscontrato: " + statusText[ajax.status];
                }
            }
        }
        
        // invio richiesta
        ajax.send(null);
    }
};
...//