Ciau ragazzi la cosa è un po' complessa non sapevo bene come mettere il titolo scusate :P
Allora mi sto avvicinando ad AJAX da poco quindi sto provando un po' di roba ed è proprio carino.
Al momento però ho 2 problemi. (posterò di seguito il codice js)
Uno è che con IE6 quando vado a premere il pulsante che fa partire la funzione per la richiesta mi dà errore nel send, e cioé "object Error" (nella funzione getAll errore: "Non riesco a collegarmi al server: object Error").
Con opera 9 invece nn mi dà questo errore.
L'altro problema è che avendo più tasti nella pagina che richiamano la stessa funzione ma con id diversi anziché restituirmi subito quello giusto, devo cliccare dopo aver caricato la pagina 2 volte sul primo tasto poi quando clicco sugli altri anziché darmi l'id giusto mi dà quello del tasto prima.
l'html per intenderci è una cosa simile a questo:
codice:
<div id="showAll91"><input name="showAll" id="91" type="button" value="Show all " onClick="getAll('91')"></div>
<div id="showAll23"><input name="showAll" id="23" type="button" value="Show all " onClick="getAll('23')"></div>
<div id="showAll16"><input name="showAll" id="16" type="button" value="Show all " onClick="getAll('16')"></div>
<div id="showAll45"><input name="showAll" id="45" type="button" value="Show all " onClick="getAll('45')"></div>
<div id="showAll67"><input name="showAll" id="67" type="button" value="Show all " onClick="getAll('67')"></div>
Cerco di spiegarmi meglio:
se clicco sul primo dovrebbe restiturmi subito (insomma quasi) la risposta che fa semplicemente l'echo del numero passato, cioé 91. Invece di farlo nn fa niente se ci riclicco me lo dà giusto. Dopodiché se clicco sul secondo anziché darmi 23 mi dà 91. Sul terzo mi dà 23 anziché 16 (quello cliccato prima insomma). Sono stato spiegato? Lo spero.
Eccovi il js che uso. Aiuto plz 
codice:
// inizializziamo l'oggetto per la richiesta asincrona
var xmlHttp = createHttpReqObj();
// funzione per la creazione dell'oggetto asincrono
function createHttpReqObj() {
var xmlHttp;
// funziona con tutti i browser tranne IE6 e anteriori
try
{
// proviamo a creare l'oggetto
xmlHttp = new XMLHttpRequest();
}
catch(e)
{
//IE6 o anteriori
var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
"MSXML2.XMLHTTP.5.0",
"MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0",
"MSXML2.XMLHTTP",
"Microsoft.XMLHTTP");
// proviamo finché nn ne funziona uno
for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
{
try
{
// proviamo a creare l'oggetto
xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
}
catch (e) {}
}
}
// ritorna l'oggetto creato e display errore
if (!xmlHttp){
alert("Errore nella creazioen dell'oggetto HTTPRequest.");
} else {
return xmlHttp;
}
}
// contattiamo il server per richiedere le risposte del thread
function getAll(idToShow)
{
var serverParams = "ids=" + idToShow;
// continuiamo solo se è stato creato l'oggetto
if (xmlHttp)
{
// proviamo a connetterci al server
try
{
xmlHttp.onreadystatechange = handleStateChange(idToShow);
xmlHttp.open("GET", "getmsgs.php?" + serverParams, true);
xmlHttp.send();
}
// errore
catch (e)
{
alert("Non riesco a collegarmi al server:\n" + e.toString());
}
}
}
// al cambio dello stato richiama questa funzione
function handleStateChange(idToShow)
{
// quando lo stato e 4 ed è ok (200) leggiamo la risposta if (xmlHttp.readyState == 4)
{
if (xmlHttp.status == 200)
{
try
{
// funzione per leggere la risposta
writeAnswers(idToShow);
}
catch(e)
{
// errore
alert("Errore nella lettura della risposta: " + e.toString());
}
}
else
{
// status
alert("Errore nella ricezione dei dati:\n" + xmlHttp.statusText);
}
}
}
// cosa facciamo con la risposta?
function writeAnswers(idToShow)
{
// risposta del server
var answers = xmlHttp.responseText;
//riferimento al div da sostituire
divToAll = document.getElementById("showAll" + idToShow);
// mostriamo la risposta
divToAll.innerHTML = answers;
}