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);
}
};
...//