PHP et ajax pb??

PHP et ajax pb?? - PHP - Programmation

Marsh Posté le 12-01-2008 à 14:53:22    

mon code se compose en trois fichier ajax.php et index.html le but est de saisir un email et d'afficher le mot de passe, à partir de ma base de données mysql, en cliquant sur le bouton afficher.

Citation :


le fichier index.html
<html>
<head><title>Exemple</title></head>
 
<script language="JavaScript">
var motdepasse;
function getXhr(){
                    var xhr = null;  
    if(window.XMLHttpRequest) // Firefox et autres
       xhr = new XMLHttpRequest();  
    else if(window.ActiveXObject){ // Internet Explorer  
       try {
                   xhr = new ActiveXObject("Msxml2.XMLHTTP" );
               } catch (e) {
                   xhr = new ActiveXObject("Microsoft.XMLHTTP" );
               }
    }
    else { // XMLHttpRequest non supporté par le navigateur  
       alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );  
       xhr = false;  
    }  
                                return xhr
   }  
function ret_motpasse(mail){
var xhr = getXhr()  
     
    xhr.onreadystatechange = function(){      
     if(xhr.readyState == 4 && xhr.status == 200){
      var rep =xhr.responseText;              return rep;    
     }
       
    }
    xhr.open("Get","ajax.php?mail="+mail,true);
    xhr.send(null);    
     
}
function afficher(){
var   email=document.form_aff.email.value;
 
  motdepasse=ret_motpasse(email);
 alert("votre mot de passe est :"+motdepasse);
}
</script>
 
<body>
<form  name="form_aff" action="" method="post">
<input type="text" name="email" size="28">
<input type="button" value="afficher mot de passe"  onClick="afficher()">
</form>
</body>
</html>


Citation :

fichier ajax.php:
<?
include "connexion.php";
if(isset($_GET['mail'])){
$email=$_GET['mail'];
$req=mysql_query("select * from membres where email='$email'" );
$nbr=mysql_num_rows($req);
if($nbr){
$ligne=mysql_fetch_array($req);
echo $ligne['motpasse'];
}
}
?>


 
mon probleme est que le variable motdepasse à la premier execution ne contient rien, pour la deuxieme clique sur le bouton afficher() il s'affiche le mot de passe de l'email de la premiere execution et ainsi de suite car l'instruction alert("votre mot de passe est :"+motdepasse); s'execute avant que la fonction ret_motpasse(email) termine son execution est ça mon problème !!y a t il une solution???

Reply

Marsh Posté le 12-01-2008 à 14:53:22   

Reply

Marsh Posté le 12-01-2008 à 18:22:12    

Tu utilises de l'Ajax en asynchrone, il faut l'utiliser en synchrone.

Reply

Marsh Posté le 12-01-2008 à 19:10:52    

czh a écrit :

Tu utilises de l'Ajax en asynchrone, il faut l'utiliser en synchrone.


Ajax = Asynchronous Javascript And Xml  :o

Message cité 1 fois
Message édité par CyberDenix le 12-01-2008 à 19:11:22

---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 12-01-2008 à 21:49:02    

je veux ajax en mode synchrone et non en asynchrone j ai essayé mes script avec IE et Opera est ça marche tres bien mais pas avec Firefoxe

Reply

Marsh Posté le 13-01-2008 à 01:03:20    

CyberDenix a écrit :


Ajax = Asynchronous Javascript And Xml  :o


 
Ouais c'est vrai, au temps pour moi, AJAX c'est asynchrone, sinon c'est pas de l'AJAX. :D
Je voulais plutôt dire "utilise XMLHttpRequest en mode synchrone et pas asynchrone".
 
Bah y'a tout dans ta page de tutorial : http://siddh.developpez.com/articles/ajax/
 
Tiens je suis gentil je te mâche le travail :
 

Citation :


function ret_motpasse(mail){
var xhr = getXhr()
    xhr.open("Get","ajax.php?mail="+mail,true);
    xhr.send(null);    
    return xhr.responseText;
}


 
Au fait dans ton code d'origine :
 

Citation :


function ret_motpasse(mail){
var xhr = getXhr()  
     
    xhr.onreadystatechange = function(){      
     if(xhr.readyState == 4 && xhr.status == 200){
      var rep =xhr.responseText;              return rep;    
     }
       
    }
    xhr.open("Get","ajax.php?mail="+mail,true);
    xhr.send(null);    
     
}  


 
Quand tu fais le return, logiquement tu n'es plus dans le contexte de la fonction "ret_motpasse" mais dans celui de ta fonction de callback "function()".


Message édité par czh le 13-01-2008 à 01:05:28
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed