Ciao a tutti,
dato che è da un po' che su un problema veramente odioso, mi sono arreso e ho voluto chiedere consulto a qualcun altro con la speranza che riesca a trovare l'inghippo...

in poche parole: io tramite questo form
codice:
numero di ore: <input type="text" size="3" maxlength="2" name="quantita" id="quantita"> [img]images/add.png[/img]
quando clicco sull'immagine mi dovrebbe richiamare questa funzione in JS

codice:
function submitquantita()
{
	var status = document.getElementById('form');
	var quantita_form = document.getElementById('quantita');		
	var http = new createXMLHttpRequest();
	http.open("post","/admin/server.php?function=submitQuantita&<?=$sn?>=<?=$s?>",true);
	http.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	http.send("quantita="+quantita_form.value);
	if (http.readyState != 4)
		document.getElementById('caricamento').innerHTML = "[img]/images/loading.gif[/img]";
	http.onreadystatechange = function() 
	{
		var risultato = http.responseText;
		aggiungiriga(risultato);
		document.getElementById('caricamento').innerHTML = '';
	}
}
che, come si può ben capire, invia il dato inserito nel campo del form e riceve (deve ricevere) un messaggio indietro da server.php...dopo dovrebbe chiamare aggiungiriga() per aggiungere la riga con i dati appena inseriti in una tabella...

codice:
function aggiungiriga(risultato)
{
	alert(risultato);
	var parametri = risultato.split("|"); // 0 => data, 1 => quantita
	var quantita = parametri[1];
	var data = parametri[0];
	var oTr=document.createElement("TR");
	var oTd1=document.createElement("TD");
	oTd1.setAttribute("CLASS","font")
	var oTd2=document.createElement("TD");
	oTd2.setAttribute("CLASS","font")

	var oText1=document.createTextNode(data);
	var oText2=document.createTextNode(quantita);

	// appendi al relativo padre

	oTd1.appendChild(oText1);
	oTd2.appendChild(oText2);

	oTr.appendChild(oTd1);
	oTr.appendChild(oTd2);
	var riga_totale = document.getElementById('riga-totale');
	document.getElementById('contore').getElementsByTagName('TBODY')[0].insertBefore(oTr,riga_totale);
}
l'alert che ho messo è a scopo di debug...infatti mi ero accorto che stranamente la funzione veniva "attivata" 3 volte:
1 volta non riceve nulla
1 altra volta riceve il dato giusto
1 altra volta riceve il dato di prima

ovviamente il 1° e il 3° caso non dovrebbero accadere, ma tant'è...infatti quando stampo il valore in ingresso con alert(risultato); mi vengono fuori 3 pop-up che visualizzano appunto il valore della variabile...

cosa sbaglio quindi?