Signaler

Verification d'adresse email avec ajax [Résolu/Fermé]

Posez votre question maxime.guillaume1 2Messages postés mercredi 27 avril 2011Date d'inscription 27 avril 2011 Dernière intervention - Dernière réponse le 27 avril 2011 à 23:24 par maxime.guillaume1
Bonjour,
J'essaye de vérifier si une adresse email entrée dans un formulaire est correcte. J'ai procédé de la manière suivante : quand on rentre quelque chose dans le champs "email" du formulaire, il appelle la fonction verif() d'un fichier ajax.js. Ensuite mon fichier ajax.js appelle lui la page index.php qui renvoie un echo contenant une image si l'adresse est correcte et une autre image si l'adresse ne l'est pas. L'echo est récupéré par le fichier ajax et le fichier ajax va ecrire dans une balise div le code de l'image. Cette balise se trouve dans mon formulaire et affichera donc l'image voulue a coté de mon input.
L'exemple de ce que je raconte se trouve a la page suivante : http://maxime.guillaume1.free.fr/ajax/
Mon problème est qu'entre deux rafraichissements d'images j'ai un "undefined" qui apparait et comme je débute en ajax je n'en comprends pas la raison ...
Je joins mes fichiers de code.

Fichier qui contient le formulaire :
<html>
<head>
<script type="text/javascript" src="ajax.js"></script>
</head>
<body>
<p>	
	<form method="GET" name="contact">
		<strong>Votre email :</strong><br/>
		<table>
		<tr>	
				<td><input type="text" name="email" size="20" onkeyup="verif()" /></td>
				<td><div id="checkmail"></div></td>
		</tr>
		</table>
	</form>
	
</p>
</form>
</body>
</html>


Fichier ajax.js
function getXhr()
{
	if(window.XMLHttpRequest)
		xhr = new XMLHttpRequest(); 
	
	else if(window.ActiveXObject)
	{
		try
		{
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e)
		{
			xhr = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	else
	{
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
		xhr = false; 
	} 
	
	return xhr;
}

function writediv(texte)
{
	document.getElementById('checkmail').innerHTML = texte;
}

function verif()
{
	if ( document.contact.email.value.length > 5 )
	{
		var xhr = getXhr();
		xhr.onreadystatechange = function()
		{
			if (xhr.readyState == 4 && xhr.status == 200)
			{
				reponse = xhr.responseText;
				document.getElementById('checkmail').innerHTML = reponse;
			}
		}
		
		writediv( xhr.open('get','index.php?mail=' + document.contact.email.value,true) );
		xhr.send(null);
	} else {
		writediv( '' );
	}
}


Fichier index.php
<html>
<body>

<?php
if ( isset($_GET['mail']) )
verifmail($_GET['mail']);

function verifmail($adresse)
{
   $Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$#';
   if(preg_match($Syntaxe,$adresse))
     echo '<img src="img/ok.png">';
   else
     echo '<img src="img/croix.png">';
}

if ( isset($_GET['mail']) )
exit();
?>

</body>
</html>


Merci d'avance
Maxime
Utile
+0
plus moins
salut,

enleve cette condition : else { writediv( '' ); }
et remplace :
writediv( xhr.open('get','index.php?mail=' + document.contact.email.value,true) );
par :
xhr.open('get','index.php?mail=' + document.contact.email.value,true);
Utile
+0
plus moins
ça fonctionne ! Merci beaucoup ammmmmine !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !