Originariamente inviato da fcaldera
poi fare

return true (o false)

appena prima dell'ultima graffa chiusa in rosso

però il valore di ritorno lo gestisci qui

...
if(ajax.status == 200) {
if (callback(ajax.responseText)) {

}
else {

}
}
...
Quindi dovrebbe andare bene così:
codice:
function inviaPOST(pagina, dati, callback) {
	if (ajax) {
		// inizializzo la richiesta in post
		ajax.open("post", pagina, true);
		
		// imposto il giusto header
		ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
		ajax.setRequestHeader("connection", "close")
		
		// effettuo la richiesta inviando i dati formati da coppie chiave-valore
		// dati = escape(dati);
		ajax.send(dati);
		
		ajax.onreadystatechange = function() {
			if(ajax.readyState === 4)			
				if(ajax.status == 200)
					var errore = true;
					if (callback(ajax.responseText) == '') 
						errore = false;
				else{
					//alert("Operazione fallita, errore numero " + ajax.status);
					return null;
				}
		}
	}
}

function controlloErrore(id_elem, id_span) {
	var risposta = null;
	inviaPOST('controllo.php', 'azione='+id_elem + '&' + id_elem+'='+prendiElementoDaId(id_elem).value, function(risposta){	
		if (risposta != '') {
			prendiElementoDaId(id_elem).className = 'textbox2';
			cambiaTesto(id_span, risposta);
		}else{
			prendiElementoDaId(id_elem).className = 'textbox1';
			cambiaTesto(id_span, '');
		}
		return errore;
	});
}
Giusto?