Verification d'adresse email avec ajax

Résolu/Fermé
maxime.guillaume1 Messages postés 2 Date d'inscription mercredi 27 avril 2011 Statut Membre Dernière intervention 27 avril 2011 - 27 avril 2011 à 15:39
maxime.guillaume1 Messages postés 2 Date d'inscription mercredi 27 avril 2011 Statut Membre Dernière intervention 27 avril 2011 - 27 avril 2011 à 23:24
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
A voir également:

2 réponses

Utilisateur anonyme
27 avril 2011 à 20:21
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);
0
maxime.guillaume1 Messages postés 2 Date d'inscription mercredi 27 avril 2011 Statut Membre Dernière intervention 27 avril 2011
27 avril 2011 à 23:24
ça fonctionne ! Merci beaucoup ammmmmine !
0