Variable globale Ajax
Résolu/Fermé
sispheor
-
Modifié par sispheor le 6/10/2011 à 16:34
jojo673 Messages postés 210 Date d'inscription lundi 19 septembre 2011 Statut Membre Dernière intervention 9 avril 2014 - 7 oct. 2011 à 13:02
jojo673 Messages postés 210 Date d'inscription lundi 19 septembre 2011 Statut Membre Dernière intervention 9 avril 2014 - 7 oct. 2011 à 13:02
A voir également:
- Variable globale Ajax
- Le fichier contient un programme écrit en python. le programme construit un mot secret mais il ne l'affiche pas. modifiez ce programme afin que à chaque itération de la boucle : la variable a augmente de 2 la variable b diminue de 1 ajoutez une instruction pour faire afficher le mot secret construit. quel est ce mot secret ? ✓ - Forum Python
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Word
- Variable d'environnement temp - Forum Word
- Msgbox vba variable ✓ - Forum VB / VBA
11 réponses
jojo673
Messages postés
210
Date d'inscription
lundi 19 septembre 2011
Statut
Membre
Dernière intervention
9 avril 2014
44
6 oct. 2011 à 23:42
6 oct. 2011 à 23:42
Ce code me semble correct ! Peut-on voir le contenu de dispologin.php ?
sispheor
Messages postés
44
Date d'inscription
vendredi 25 mars 2011
Statut
Membre
Dernière intervention
9 juillet 2012
11
7 oct. 2011 à 09:06
7 oct. 2011 à 09:06
Merci pour cette premiere réponse. Comme je l'ai expliqué la fonction ajax fonctionne et la page PHP me renvoi bien 1 ou zéro. Le problème est uniquement sur l'affectation de la variable réponse. Mais voici le code quand même!
//dispologin.php <?php $link = mysql_connect("localhost", "root", "p@ssw0rd") or die("Impossible de se connecter : " . mysql_error()); mysql_select_db("FTP"); // VERIFICATION $result = mysql_query("SELECT nomuser FROM USERS WHERE nomuser='$_POST[valuelogin]'"); if(mysql_num_rows($result)==0){ //pas de ligne donc pseudo inexistant dans la base echo "0"; } else{ //sinon si il y a une ligne dans la reponse echo "1"; } ?>
jojo673
Messages postés
210
Date d'inscription
lundi 19 septembre 2011
Statut
Membre
Dernière intervention
9 avril 2014
44
7 oct. 2011 à 09:17
7 oct. 2011 à 09:17
Donc si on utilise ce code :
success: function(msg){ alert(msg); }Il affiche bien le bon message ?
sispheor
Messages postés
44
Date d'inscription
vendredi 25 mars 2011
Statut
Membre
Dernière intervention
9 juillet 2012
11
7 oct. 2011 à 09:26
7 oct. 2011 à 09:26
Et bien. J'avais remarqué que dans une fonction ajax je ne pouvais pas faire de alert(). Il n'affiche jamais rien. En revanche je sais que la fonction rentre bien dans l'une des boucles car les "if" modifient le CSS avec login.classname. Et cela fonctionne parfaitement à ce niveau là. Il y a juste le réponse = true ou false qui n'est pas prit en compte....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
sispheor
Messages postés
44
Date d'inscription
vendredi 25 mars 2011
Statut
Membre
Dernière intervention
9 juillet 2012
11
Modifié par sispheor le 7/10/2011 à 09:31
Modifié par sispheor le 7/10/2011 à 09:31
J'ai dis une bétise. Le alert (msg) fonctionne tres bien dans la fonction ajax! Et affiche bien 0 quand le pseudo est dispo. Mais reponse reste à sa valeur initialisé et donc false.
jojo673
Messages postés
210
Date d'inscription
lundi 19 septembre 2011
Statut
Membre
Dernière intervention
9 avril 2014
44
7 oct. 2011 à 09:38
7 oct. 2011 à 09:38
Peut-être que le problème viens du fait que toute la fonction est exécuter avant que l'AJAX n'est eu le temps de s'exécuter, c'est à dire la variable retour contient false au début, toute la fonction est parcourut, on arrive à l'ajax qui commence l'execution, on arrive au return retour; et une fois l'ajax terminé il enregistre la valeur retourné dans la variable retour.
Je ne connais pas très bien cette méthode pour utiliser l'ajax, mais je sais que normalement on peut dire que quand l'ajax c'est terminé, alors on retourne la valeur.
Je ne connais pas très bien cette méthode pour utiliser l'ajax, mais je sais que normalement on peut dire que quand l'ajax c'est terminé, alors on retourne la valeur.
sispheor
Messages postés
44
Date d'inscription
vendredi 25 mars 2011
Statut
Membre
Dernière intervention
9 juillet 2012
11
7 oct. 2011 à 09:43
7 oct. 2011 à 09:43
Et bien merci je vais suivre cette piste. Je posterais la solution si j'en trouve une.
Bonjour
Je n'y connais pas grand chose en ajax, mais il me semble que la variable retour est locale dans la fonction check['login'] alors qu'elle est globale dans la fonction function(msg){. Il ne s'agit donc pas de la même variable.
Remplace
Je n'y connais pas grand chose en ajax, mais il me semble que la variable retour est locale dans la fonction check['login'] alors qu'elle est globale dans la fonction function(msg){. Il ne s'agit donc pas de la même variable.
Remplace
var retour = false; //par defaut ..par
retour = false; //par defaut
sispheor
Messages postés
44
Date d'inscription
vendredi 25 mars 2011
Statut
Membre
Dernière intervention
9 juillet 2012
11
7 oct. 2011 à 09:58
7 oct. 2011 à 09:58
Non ce n'est pas ça. Mais merci pour cette réponse. C'est jojo qui a raison. Avec différent alert je viens de me rendre compte que la fonction se termine avant l'ajax. Il faut donc que je trouve le moyen d'attendre que le ajax réponde avant que la fonction renvoi la réponse. Pour info jojo j'utilise un plugin jquery pour faire de l'ajax.
jojo673
Messages postés
210
Date d'inscription
lundi 19 septembre 2011
Statut
Membre
Dernière intervention
9 avril 2014
44
7 oct. 2011 à 10:09
7 oct. 2011 à 10:09
Pourquoi ne pas mettre les instructions directement dans la fonction success: function.. ?
C'est vrai qu'il ne suffit pas de rendre 'retour' globale pour que ça marche, si ton ajax est exécuté en asynchrone. Mais je crois quand même que ma remarque sur le fait que tu as deux variables retour différentes, une locale et l'autre globale, reste valable. À vérifier quand tu auras trouvé le moyen d'attendre la réponse d'ajax.
jojo673
Messages postés
210
Date d'inscription
lundi 19 septembre 2011
Statut
Membre
Dernière intervention
9 avril 2014
44
7 oct. 2011 à 10:21
7 oct. 2011 à 10:21
*Le rendre non-asynchrome.
C'est une solution, mais parcontre la navigation sera bloqué jusqu'à la réponse de l'ajax.
C'est une solution, mais parcontre la navigation sera bloqué jusqu'à la réponse de l'ajax.
jojo673
Messages postés
210
Date d'inscription
lundi 19 septembre 2011
Statut
Membre
Dernière intervention
9 avril 2014
44
7 oct. 2011 à 13:02
7 oct. 2011 à 13:02
Ah pardon j'avais crus voir un "a" :)
sispheor
Messages postés
44
Date d'inscription
vendredi 25 mars 2011
Statut
Membre
Dernière intervention
9 juillet 2012
11
Modifié par sispheor le 7/10/2011 à 10:32
Modifié par sispheor le 7/10/2011 à 10:32
C'est bon ça marche!Le père à raison il faut passer le async en false (par défaut il est en true). Du coup la fonction attend la réponse et tout roule.
Cependant jojo a raison également la navigation est bloquée le temps de la requête. Il vaut mieux ne pas avoir une grosse base de données à consulter.
En gros il fallait lire ce $ù%*^£ de manuel!! RTFM quoi.
Merci beaucoup pour vos réponses!!!
Cependant jojo a raison également la navigation est bloquée le temps de la requête. Il vaut mieux ne pas avoir une grosse base de données à consulter.
En gros il fallait lire ce $ù%*^£ de manuel!! RTFM quoi.
Merci beaucoup pour vos réponses!!!