Dal mio ultimo post infatti mi sono reso conto che avevi ragione, ma non sapevo come risolvere. Interessante la tua soluzione, non sapevo che ad una funzione si potesse inviare come parametro un'altra funzione (come sono ignoranteOriginariamente inviato da fcaldera
Ripeto: il problema è che mentre stai ancora aspettando la risposta (asincrona) viene eseguito l'if, per cui all'interno della funzione inviapost otterrai il valore correttamente, mentre al di fuori invece no
ti basta definire una funzione di callback, ad es.
la parte in rosso la cambi di volta in volta, facendo eseguire funzioni diverse con la rispostacodice: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) { return callback(ajax.responseText); }else{ alert("Operazione fallita, errore numero " + ajax.status); return null; } } } } } function controlloErrore(id_elem, id_span) { var risposta = null; inviaPOST('controllo.php', 'azione=... , function(risposta) { if (risposta) { if (risposta != '') { prendiElementoDaId(id_elemento).className = 'textbox2'; cambiaTesto(id_span, risposta); }else{ prendiElementoDaId(id_elemento).className = 'textbox1'; cambiaTesto(id_span, ''); } } }); }).
Grazie.
Un ultima domanda: ma se io volessi mettere un return risposta alla fine della funzione controlloErrore poi va? Oppure in che punto la devo inserire?