Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/11/2010, 19h46   #1
Membre du Club
 
Inscription : septembre 2004
Messages : 163
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 163
Points : 43
Points : 43
Par défaut Impossible de connaitre le retour de ma fonction

Bonjour à tous,

Après maintes et maintes tentatives je viens vous exposer mon problème dans lequel je patauge...

Voici ma fonction, (je suis dans un $(document).ready(function() {):
Code :
1
2
3
4
5
6
7
8
9
10
11
isProspectAlreadyExist(email,{
				succes:function(idUser){
					fieldsOk = false;
					message_erreur = '<div class="txt_error">Le mail existe déjà dans notre base de données. Vous êtes déjà inscrit.</div>';
					$(".email_error").html(message_erreur);
					$(".email_error").removeClass("display_none");	
					$(".email_ok").addClass("display_none");
				}
				,echec:function(idUser){
				}
			});
Dans laquelle j'essaye désespérément d'affecter false à fieldsOk. Or du moment où je sors de ma fonction, fieldsOk repasse à true alors que si je l'affiche au moment de l'affectation (dans le succes) il est bien à false.
Voici ma fonction isProspectAlreadyExist:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function isProspectAlreadyExist(mail,callback)
{
	var xhr = getXhr();
	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function()
	{
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200)
		{
			idUser = xhr.responseText;
			idUser = trim(idUser);
			if(idUser=="")
			{
				callback.echec(idUser);
				return;
			}
			else
			{
				callback.succes(idUser);
				return;
			}
		}
	}
	// Ici on va voir comment faire du post
	xhr.open("POST","php/controller/UserController.php?method=isProspectAlreadyExist",true);
	// ne pas oublier ça pour le post
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr.send("emailUser="+mail);
}
J'ai essayé plusieurs contournement, affecter une valeur a un input type hidden que j'avais mis dans mon php mais le resultat est le meme, du moment que je sors de la fonction il n'a plus la même valeur! J'imagine que la page est rechargée ou un truc dans le genre, je ne comprends pas bien.
Pour etre le plus explicite possible, voici ce que je veux faire. Dans le cas où mon fieldsOk est à false, je fais un "return false" pour afficher mon message d'erreur et ne pas continuer. J'ai essayé de mettre le return false directement dans le cas du "succes" mais cela ne marche pas non plus.
J'espère avoir été assez claire, n'hésitez pas à me poser des questions et merci par avance.
lili2704 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2010, 09h45   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 29 982
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 29 982
Points : 45 044
Points : 45 044
encore faudrait il fait un return du resultat ou l'affecter à une variable globlae ...
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2010, 12h18   #3
Membre du Club
 
Inscription : septembre 2004
Messages : 163
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 163
Points : 43
Points : 43
J'ai bien essaye de retourner qqchose ou d'affecter une variable globale mas cela ne marche pas. :-(
Si j'essaye de l'afficher une fois sortie de ma fonction elle n'a pas la bonne valeur.
Sais tu pourquoi?
Merci
lili2704 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2010, 14h55   #4
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 794
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 794
Points : 35 788
Points : 35 788
Sujet traité maintes fois !

Tu fais un appel AJAX asynchrone, donc quand tu sors de la fonction, la réponse AJAX n'a pas encore été reçue et tu ne peux donc pas en utiliser le résultat !

Le callback correspond à toutes les actions à exécuter après la réponse du serveur.

Autre détail : si tu utilises jQuery, il est particulièrement maladroit de faire une requête AJAX "classique" : il faut tout faire avec jQuery, tu t'éviteras d'éventuels problèmes de portée.
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h26.


 
 
 
 
Partenaires

Hébergement Web