in effetti se vadoa ad importare un xml il problema non si pone, ma ho visto nella guida presente in questo sito che posso importare anche semplice file di testo (responseText).
per quanto riguarda la codifica dei caratteri ho provato in tutte le maniere ma non sono riuscito a sistemare il problema.
in effetti ho fatto un giretto per i vari siti che spiegavano ajax in spagnolo, pensando che lo spagnolo è pieno di accenti, ma ho notato che il problema non se lo sono posto.
questa è la funzione che ho trovato e con cui vado a caricare il file.
codice:
function load_content(nomeFile,w_div_to_write,wait_div) {
// variabili di funzione
var
// assegnazione oggetto XMLHttpRequest
ajax = assegnaXMLHttpRequest(),
// assegnazione elemento del documento
elemento = prendiElementoDaId(w_div_to_write),
// risultato booleano di funzione
usaLink = true;
// se l'oggetto XMLHttpRequest non è nullo
if(ajax) {
// il link al file non deve essere usato
usaLink = false;
//mi assicuro che il contenitore finale delle info non sia visibile
if (elemento.style.display = "block") elemento.style.display = "none";
nomeFile+="?"+parseInt(Math.random()*999999999999999);
// 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() {
//visualizzo il testo di attesa
mostraAttesa('caricamento','testo-temporaneo',5);
// verifica dello stato
if(ajax.readyState === readyState.COMPLETATO) {
// verifica della risposta da parte del server
if(statusText[ajax.status] === "OK"){
// il tipo di contenuti che mi ritornano
var cType = ajax.getResponseHeader("Content-Type");
// nel caso di xml
if (cType == "text/xml") {
// visualizzazione risultato parsing
response_msg = parsaXml(ajax.responseXML,"item");
} else if (cType == "text/plain") {
// nel caso di testo semplice
new_text = formatta_text(ajax.responseText);
//new_text = ajax.responseText.toString();
// operazione avvenuta con successo
response_msg = new_text;
} else {
// errore di caricamento
response_msg = "Impossibile stabilire la tipologia del contenuto.
";
response_msg += "Errore riscontrato: " + statusText[ajax.status];
}
}else {
// errore di caricamento
response_msg = "Impossibile effettuare l'operazione richiesta.
";
response_msg += "Errore riscontrato: " + statusText[ajax.status];
}
elemento.innerHTML = response_msg;
elemento.style.display = "block";
wait = prendiElementoDaId(wait_div);
wait.style.display = "none";
}
}
// invio richiesta
ajax.send(null);
}
return usaLink;
}
ho provato anche a sotituire i caratteri accentati con le entità:
codice:
function formatta_text(w_text){
//=======================================================
//for (aa=0;aa<w_text.length-1;aa++) alert(escape(w_text.substr( aa,1)))
w_text = w_text.replace(/à/g, "aagrave;");
w_text = w_text.replace(/à/g,"aagrave;");
w_text = w_text.replace(/è/g, "eegrave;");
w_text = w_text.replace(/è/g,"eegrave;");
w_text = w_text.replace(/ì/g, "iigrave;");
w_text = w_text.replace(/ì/g,"iigrave;");
w_text = w_text.replace(/ò/g, "oograve;");
w_text = w_text.replace(/ò/g,"oograve;");
w_text = w_text.replace(/ù/g, "uugrave;");
w_text = w_text.replace(/ù/g,"uugrave;");
w_text = w_text.replace(/€/g,"eeuro;");
w_text = w_text.replace(/€/g,"eeuro;");
w_text = w_text.replace(/£/g,"epound;");
w_text = w_text.replace(/£/g,"epound;");
w_text = w_text.replace(/&/g,"eecommerciale;");
w_text = w_text.replace(/&/g,"eecommerciale;");
w_text = w_text.replace(/\+/g,"simbolopiu;");
//alert(w_text);
return w_text;
}
ma niente di fatto...
mi potreste dare qualche dritta?