Ciao a tutti.
Il mio problema è il seguente: inserendo un nominativo, in un form di registrazione, debbo controllare se il dato inserito è formalmente corretto (non ci debbono essere spazi, deve essere lugo almento 6 caratteri) e cosa più importante non deve essere presente nel database.

Questo è il codice javascript:
codice:
function KeyUpNominativo()
 {
   Nome=getElementById('Nominativo').value;
   Carica_Blocco="VerificaNominativo&Nome="+Nome;

 }
function Carica_Blocco(P)
 {
 if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest();
  }
 else
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.abort();
  xmlhttp.onreadystatechange=Elabora;
  xmlhttp.open("GET","index.php?A="+P,true);
  xmlhttp.send();
 }
 
function Elabora()
 {
  var currentTime = new Date();

    document.getElementById('Debug_NumeroUtente').innerHTML="Elabora --  " + currentTime.getTime();
 xmlDoc=xmlhttp.responseXML;
// x=xmlDoc.documentElement.childNodes.length;

 if (xmlDoc==null)
  {
   return 0;
   }
  X=xmlDoc.childNodes;
 x=X.length;

 for (n=0; n<x; n++)
  {
   nodo=X[n].nodeName;
   y=X[n].childNodes;
   Y=y.length;
   for (N=0; N<Y; N++)
    {
	 nome=y[N].nodeName;
	 tiponodo=y[N].nodeType;
	 Valore=y[N].childNodes[0].nodeValue;
     switch (nodo)
	  {
	   case "update":
	    e = document.getElementById(nome);
		e.innerHTML=Valore;
	  break;
	 }
	}
  }
 xmlhttp.abort();
 }
Questo il codice HTML
codice:
 <input type='text' id='Nominativo' onkeyup='KeyUpNominativo()'>
 <div id='Risposta'>Spazio per la risposta della verifica del nominatovo</div>
Il codice php di index.php restituisce un file xml simile a questo

codice:
...
<update>
 <Risposta>Nome troppo corto</Risposta>
</update>
La mia difficoltà è che se uso una chiamata sincrona:
codice:
xmlhttp.open("GET","index.php?A="+P,false);
ad ogni pressione di tasto mi addormento.
utilizzando una chiamata asincrona
codice:
xmlhttp.open("GET","index.php?A="+P,true);
dopo che ho finito di premere i tasti... non sempre ho l'aggirnamento.
Oppure: scrivo un nome che esiste nel database es: "alessandro" ho la risposta che esiste (quindi tutto ok)
Se cancello l'ultima lettera (rimane alessadr -> che non esiste nel db) non mi aggiorna la risposta !!!!!

Credo che il problema sia la sovrapposizione delle varie chiamate ... credovo di risolvere con xmlhttp.abort() , in verità messi un po a casaccio !!!!

Spero di essere stato chiaro e che qualcuno mi possa aiutare ad risolvere.

Grazie