Bonjour � tous, felicitations pour ce forum plein de bonnes choses..

Je vous explique mon probl�me, un vrai casse t�te...

Je souhaite effectuer en Ajax une v�rification de mon formulaire. Jusqu'a aujourd'hui tout allait bien, mais j'avais d�finit la requ�te en false, donc, synchrone.
Comme le script va chercher dans ma BDD tous les pseudos des visiteurs, pour verifier que le pseudo entr� n'est pas d�j� utilis�, pareil pour les emails, l'�cran reste fig�, ce qui risque de faire fuir tout le monde..

J'aimerai donc mettre le script en mode asynchrone, mais l� .. PLUS RIEN..
Je suis rest� 24 h d'affil�e dessus (je suis insomniaque), et je n'ai toujours pas trouv� la solution, pourtant je suis bon en Google...

Je vais donc vous donner simplement le script javascript correspondant au champ "pseudo" qui me pose probl�me, et je vous donnerai ensuite la version synchrone fonctionnelle.

Si vous ne me r�pondez pas tout de suite, c'est pas grave, j'ai pr�par� une corde

Voici le code qui ne fonctionne pas :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 
 
function writediv(texte)
 
{
document.getElementById('validpseudo').innerHTML = texte;
}
 
function verifPseudo(pseudo)
{
	if(pseudo != '')
	{
		if(texte = file('inc/verifpseudo.php?pseudo='+escape(pseudo)))
		{
			if(pseudo.length<3)
				writediv('<img src="style/images/gif/invalide.gif"/><div style="color:red;text-align:center;">Ce Pseudonyme semble trop court. Veuillez entrer au moins 3 caractères svp.</div>');
			else if(texte == 0)
				writediv('<img src="style/images/gif/valide.gif"/>');
			else if(texte == 1)
				writediv('<img src="style/images/gif/invalide.gif"/><div style="color:red;text-align:center;">Pseudo indisponible</div>');
			else if(texte == 2)
				writediv('<img src="style/images/gif/invalide.gif"/><div style="color:red;text-align:center;">Ce Pseudonyme ne semble pas valide, seuls ces caractères spéciaux: "<strong> _ - . </strong>" sont acceptés.</div>');
 
		}
	}
 
}
 
 
 
function file(fichier)
{
if(window.XMLHttpRequest) // FIREFOX
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
return(false);
 
xhr_object.open('GET',fichier,true);
xhr_object.send(null);
    xhr_object.onreadystatechange = function()
        {
        if (xhr_object.readyState == 4)
            {
			return(xhr_object.responseText);
			}
 
		}
}

Je vous explique rapidement le principe :

La valeur du champs "pseudo" est r�cup�r�e par javascript, envoy�e par GET � verifpseudo.php?pseudo=... ,

La page verifpseudo.php traite la valeur avec une regex pour verifier que le format est valide, puis va chercher dans la bdd les pseudos similaires.

Elle renvoie en echo "0" si le pseudo est valide et qu'il n'existe pas, "1" s'il est valide mais qu'elle existe, "2" s'il est syntaxiquement incorrect.

Le script javascript verifie egalement que le pseudo n'est pas trop court, et enfin il ecrit dans une div de la page un message d'erreur correspondant, ou une petite icone pour montrer qu'il est valide.



J'espere que vous avez tout compris.

Voici enfin le code qui fonctionnait mais qui fige l'�cran :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
function writediv(texte)
{
document.getElementById('validpseudo').innerHTML = texte;
}
 
function verifPseudo(pseudo)
{
	if(pseudo != '')
	{
		if(texte = file('inc/verifpseudo.php?pseudo='+escape(pseudo)))
		{
			if(pseudo.length<3)
				writediv('<img src="style/images/gif/invalide.gif"/><div style="color:red;text-align:center;">Ce Pseudonyme semble trop court. Veuillez entrer au moins 3 caractères svp.</div>');
			else if(texte == 0)
				writediv('<img src="style/images/gif/valide.gif"/>');
			else if(texte == 1)
				writediv('<img src="style/images/gif/invalide.gif"/><div style="color:red;text-align:center;">Pseudo indisponible</div>');
			else if(texte == 2)
				writediv('<img src="style/images/gif/invalide.gif"/><div style="color:red;text-align:center;">Ce Pseudonyme ne semble pas valide, seuls ces caractères spéciaux: "<strong> _ - . </strong>" sont acceptés.</div>');
 
		}
	}
 
}
 
 
 
function file(fichier)
{
if(window.XMLHttpRequest) // FIREFOX
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
return(false);
xhr_object.open("GET", fichier, false);
xhr_object.send(null);
if(xhr_object.readyState == 4) return(xhr_object.responseText);
	else 
	return(false);
}

Voila. Apr�s de (tr�s) nombreux essais, j'ai remarqu� par exemple qu'en faisant :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
alert(xhr_object.responseText);
au lieu de return() , j'obtenais dans la fenetre d'erreur la r�ponse PHP (0,1,2).

Le script va donc correctement chercher les infos... mais ne veut plus les afficher dans la div...

Tiens �a me donne envie de pleurer tout �a...

Bon bah euh... Bon courage


Dim.