Nell'esempio della lezione precedente non facciamo alcuna considerazione sulla natura del file di testo che leggiamo. Tale omissione è voluta ed indica che di fatto la cosa importante è la sola verifica dell'operazione. Infatti il file viene letto e mostrato allo stesso modo, fosse un documento XHTML,XML o un semplice testo.
Per verificare l'operazione è sufficiente quindi creare un file di testo dal nome "testo.txt", sciverci qualcosa dentro, qualunque cosa, e salvarlo nella stessa cartella della pagina HTML.
NOTA. Per poter testare questo esempio, come qualunque altro applicativo basato su XMLHttpRequest
, è necessario richiamare la pagina HTML attraverso un webserver (locale o remoto), tramite http://localhost/pagina.html
, per esempio. Non funziona invece l'apertura del file dalle cartelle locali del PC, ad esempio C:pagina.html
.
Request XML
Interagire con XML non è differente dall'interagire con (x)html o testo, solo che in questo caso il parametro responseText
viene utilizzato solo qualora il responseXML
risulta nullo, ovvero ogni qualvolta l'XML letto o generato dal server dovesse essere non valido o inesistente.
Per provare a leggere l'XML, aggiungiamo al codice per la richiesta del testo pochi cambiamenti all'interno della funzione assegnata ad onreadystatechange
.
Listato 17. Aggiungere i controlli per XML
// ... codice della lezione precedente
// sostituzione del blocco inerente
// la funzione dichiarata in onreadystatechange
ajax.onreadystatechange = function() {
// verifica dello stato
if(ajax.readyState === readyState.COMPLETATO) {
// verifica della risposta da parte del server
if(statusText[ajax.status] === "OK") {
// verifica della validità dell'XML restituito dal server
if(ajax.responseXML)
// visualizzazione risultato parsing
elemento.innerHTML = parsaXml(ajax.responseXML);
else
// visualizzazione contenuto letto
// evitando di scrivere la risposta in modo
// interpretabile dal browser
elemento.innerHTML = "L'XML restituito dalla richiesta non è valido.<br />" +
ajax.responseText.split('<').join("<").split('>').join(">");
}
else
// errore di caricamento
elemento.innerHTML = "Impossibile effettuare l'operazione richiesta.<br />" +
"Errore riscontrato: " + statusText[ajax.status];
};
};
// ... resto del codice
La differenza principale sta nei controlli da effettuare ad operazione completata. Oltre a verificare che il server abbia risposto correttamente è necessario verificare che tale risposta sia valida e contenga un documento XML. Può capitare infatti che il file richiesto possa contenere degli errori, riuscendo quindi ad essere letto ma a non essere riconosciuto come XML.