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, ''); } } }); }

Rispondi quotando