Confesso di avere le idee un po' confuse sull'oggetto XMLHttpRequest & parenti e affini.
Ho questo codice:
La funzione processbarcode lancia la function controlla che, via XMLHttpRequest , interroga la pagina maincheck.ashx passandole due parametri in querystring.codice:function processBarcode(bc) { var e = document.getElementById("ddlconti"); var conto = e.options[e.selectedIndex].value; var verificato = (controlla(conto, bc) == 'True'); if (verificato) { //mostro labels document.getElementById("matri").display = "block"; document.getElementById("scans").innerHTML += "<div>" + bc + "</div>"; document.getElementById("bottoni").style.display = "block"; } else { alert('MATRICOLA NON ACCETTATA!'); } } //la funzione seguente restituisce una stringa con true o false se la matricola appartiene al conto indicato function controlla(c, m) { var httpRequest = new XMLHttpRequest(); httpRequest.open('POST', "maincheck.ashx?c="+c+"&m="+m); httpRequest.send(); //httpRequest.responseType = 'text' return httpRequest.responseText; }
A seconda dell'esito della maincheck (che fa un response.write("True") oppure no) poi deve fare delle altre cose oppure mostrarmi l'alert MATRICOLA NON ACCETTATA!
Ecco, mi ritorna sempre quell'alert anche se ho verificato che la maincheck con i parametri che le passo mi scriverebbe un bel 'True'...
Penso di sbagliare qualcosa ma non so cosa.
Ho ipotizzato che il problema sia che la XMLHttpRequest è asincrona e questo manda in cacca il resto della processbarcode: potrei metterla sincrona ma ho letto che è da delinquenti... e allora come ne esco?
C'è un paziente mentore che mi indichi la via?