io ho trovato questo codice su IoProgrammo di Luglio/Agosto:
Prendilo così com'è... io non so niente... :) E' un codice Javascript (anche se userò la syntax-highlight di php): non sono esperto ;)
Aggiornare senza refresh del browser
Con questo semplice esempio mostriamo come sia possibile, utilizzando l’oggetto XMLHttpRequest, realizzare delle pagine che aggiornano la loro interfaccia senza richiedere il refresh del browser.
Lo script che segue rende possibile realizzare una pagina che mostra una serie di slide, prelevate su richiesta dal server, e le visualizza senza ricaricare la pagina.
Per provare l’esempio è necessario pubblicare su un server web lo script, la pagina di prova e le slides
Codice PHP:
/**
* Funzione che istanzia un oggetto XMLHttpRequest usando un meccanismo cross browser.
*
* @return restituisce un'istanza di XMLHttpRequest oppure il valore false in caso
* di errori.
*/
function getXMLHttpRequestInstance() {
var xmlhttp;
// Prova il metodo Microsoft usando la versione più recente:
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
// Se non è stato possibile istanziare l'oggetto forse siamo
// su Mozilla/FireFox o su un altro browser compatibile:
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp = false;
}
}
// Restituisce infine l'oggetto:
return xmlhttp;
}
/**
* Funzione che sostituisce il contenuto HTML di un nodo della pagina.
*
* @param nodeId ID del nodo
* @param html codice HTML da sostituire a quello del nodo
*/
function updateContent(nodeId, html) {
var node = document.getElementById(nodeId);
if(null == node) {
alert("[ERRORE] L'elemento " + nodeId + " non esiste");
return;
}
node.innerHTML = html;
node.style.visibility = "visible";
}
/**
* Richiede al web server il contenuto di una slide (testo o HTML) in maniera asincrona.
* @param nodeId ID dell'elemento della pagina che conterrà la slide
* @param url URL della slide (deve essere sullo stesso server per motivi di sicurezza)
*/
function showSlide(nodeId, url) {
var xmlhttp = getXMLHttpRequestInstance();
if(!xmlhttp) {
alert("Il browser non supporta l'oggetto XMLHttpRequest");
return false;
}
xmlhttp.open("GET", url,true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4) {
if (xmlhttp.status==200) {
updateContent(nodeId, xmlhttp.responseText);
} else if (xmlhttp.status==404) {
alert("[ERRORE] l'URL "+url+"non esiste!");
} else {
alert("[ERRORE] errore non gestito (" + xmlhttp.status + ")");
}
}
}
xmlhttp.send(null);
}
ciao ciao :P