// funzione per assegnare l'oggetto XMLHttpRequest
// compatibile con i browsers più recenti e diffusi
function assegnaXMLHttpRequest() {
// lista delle variabili locali
var
// variabile di ritorno, nulla di default
XHR = null,
// informazioni sul nome del browser
browserUtente = navigator.userAgent.toUpperCase();
// browser standard con supporto nativo
// non importa il tipo di browser
if(typeof(XMLHttpRequest) == "function" || typeof(XMLHttpRequest) == "object")
{ XHR = new XMLHttpRequest(); }
// browser Internet Explorer
// è necessario filtrare la versione 4
else if(
window.ActiveXObject &&
browserUtente.indexOf("MSIE 4") < 0
) {
// la versione 6 di IE ha un nome differente
// per il tipo di oggetto ActiveX
if(browserUtente.indexOf("MSIE 5") < 0)
XHR = new ActiveXObject("Msxml2.XMLHTTP");
// le versioni 5 e 5.5 invece sfruttano lo stesso nome
else
XHR = new ActiveXObject("Microsoft.XMLHTTP");
}
return XHR;
}
// funzione di caricamento testo,
// accetta una stringa contenente
// il nome di un file da leggere
function ajaxthis(elementz,nomeFile,tipoconn) {
// assegnazione oggetto XMLHttpRequest
ajax = assegnaXMLHttpRequest();
// assegnazione elemento del documento
elemento = document.getElementById(elementz);
if (document.forms[0] > "") {
stringa = PreparaDati();
}
else
{ stringa = ""; }
ajax.open(tipoconn, nomeFile, true);
ajax.onreadystatechange = function() {
// verifica dello stato
if(ajax.readyState == 4) {
// verifica della risposta da parte del server
if(ajax.status == 200)
// operazione avvenuta con successo
elemento.innerHTML = ajax.responseText;
else {
// errore di caricamento
elemento.innerHTML = "Impossibile effettuare l'operazione richiesta.
";
elemento.innerHTML += "Errore riscontrato: " + statusText[ajax.status];
}
}
}
// impostazione richiesta asincrona in GET o POST
// del file specificato
if (tipoconn == "get") {
ajax.setRequestHeader("Connection", "close");
}
else {
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
ajax.setRequestHeader("Content-length", stringa.length);
ajax.setRequestHeader("Connection", "close");
}
if (tipoconn == "get") {
ajax.send(null);
}
else {
ajax.send(stringa);
}
}
function PreparaDati(){
stringa = "";
var form = document.forms[0];
var numeroElementi = form.elements.length;
for(var i = 0; i < numeroElementi; i++){
if(i < numeroElementi-1){
stringa += form.elements[i].name+"="+escape(encodeURIComponent(form.elements[i].value))+"&";
}else{
stringa += form.elements[i].name+"="+escape(encodeURIComponent(form.elements[i].value));
}
}
return stringa;
}