PHP et ajax pb?? - PHP - Programmation
Marsh Posté le 12-01-2008 à 18:22:12
ReplyMarsh 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
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
Marsh Posté le 13-01-2008 à 01:03:20
CyberDenix a écrit : |
Ouais c'est vrai, au temps pour moi, AJAX c'est asynchrone, sinon c'est pas de l'AJAX.
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 : |
Au fait dans ton code d'origine :
Citation : |
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()".
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.
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>
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???