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:
Questo il codice HTMLcodice: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(); }
Il codice php di index.php restituisce un file xml simile a questocodice:<input type='text' id='Nominativo' onkeyup='KeyUpNominativo()'> <div id='Risposta'>Spazio per la risposta della verifica del nominatovo</div>
La mia difficoltà è che se uso una chiamata sincrona:codice:... <update> <Risposta>Nome troppo corto</Risposta> </update>
ad ogni pressione di tasto mi addormento.codice:xmlhttp.open("GET","index.php?A="+P,false);
utilizzando una chiamata asincrona
dopo che ho finito di premere i tasti... non sempre ho l'aggirnamento.codice:xmlhttp.open("GET","index.php?A="+P,true);
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

!!!!
Rispondi quotando
