Verification d'adresse email avec ajax

Résolu
maxime.guillaume1 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
maxime.guillaume1 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
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
 
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   Statut Membre Dernière intervention  
 
ça fonctionne ! Merci beaucoup ammmmmine !
0