Ciao, non ho seguito l'intera discussione ma mi è saltato subito all'occhio questo grosso e(o)rrore:
codice:
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
document.getElementById("risultato").innerHTML += xhttp.responseText;
}
};
xhttp.open("GET", wch, false);
Stai facendo una richiesta AJAX in modalità sincrona (specificato dal false su open) e stai usando il gestore di evento onreadystatechange (che per definizione è asincrono). Le due cose non possono coesistere.
Se fai una chiamata sincrona non dovrai usare onreadystatechange ma scrivere lo script direttamente a seguire quella chiamata.
Ad ogni modo è altamente consigliato eseguire chiamate sempre in modo asincrono, per cui dovresti indicare true su open.