|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : mai 2009 Messages : 234 ![]() |
Bonjour à tous,
Voilà, j'ai un script js me permettant de récupérer via ajax (j'utilise jQuery pour plus de facilité) une valeur que je doit ensuite mettre dans un attribut de l'objet duquel découle cette même fonction. L'ennui, c'est que JS n'arrive pas à faire une chose pareil. Serais-ce une histoire de callback ? (pas bien compris le principe). Mon script : Code :
Je précise que le problème ne viens pas d'ajax qui me retourne la bonne valeur comme prévu. Je n'arrive juste pas bien a comprendre la portée des variables en objet dans js... D'avance merci pour votre aide...
__________________
Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut... Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini... |
||
|
|
00
|
|
|
#2 | ||
![]() ![]() Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur Inscription : mars 2002 Messages : 30 069 ![]() |
essaye de attacher ta variable à la fonction ..
Code :
__________________
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 |
||
|
|
00
|
|
|
#3 | |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 808 ![]() |
Ben surtout, attends d'avoir récupéré la valeur avant d'essayer de l'affecter...
Un classique AJAX : utiliser les données au bon moment !Citation:
Ce serait pas plutôt : "je n'arrive pas à faire une chose pareille avec JS" ?
__________________
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 JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
|
|
00
|
|
|
#4 |
![]() ![]() Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur Inscription : mars 2002 Messages : 30 069 ![]() |
ha oui le return dans le success ^^
__________________
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 |
|
|
00
|
|
|
#5 | |||
|
Membre du Club
![]() Inscription : mai 2009 Messages : 234 ![]() |
Merci à vous deux.
Citation:
@SpaceFrog : Si je fais ce que tu préconise, maVar n'est alors plus un attribut privé et se voi donc accessible et modifiable a l'extérieur de l'objet, ce que je ne souhaite absolument pas... De plus, il me semble que faire un return dans une fonction anonyme est déprécié... @Bovino : Merci pour le lien. Il est vrai que je fais (hélas) encore ce genre d'erreur de base... Que préconises-tu dans ce contexte alors ? Car mettre l'instruction ajax dans une autre fonction serait juste inutile à mon sens puisque j'en ai besoin uniquement pour cette fonction. Plus généralement, travaillant avec Komodo Edit, ce dernier m'a indiqué le problème de return dans le success ajax. Est-ce un réel problème ? Quels changements implique ? Code :
__________________
Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut... Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini... |
|||
|
|
00
|
|
|
#6 | |||
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 872 ![]() |
Citation:
|
|||
|
|
01
|
|
|
#7 | |
|
Membre expérimenté
![]() ![]() Duke Jikel Inscription : mai 2010 Messages : 340 ![]() |
Citation:
|
|
|
|
00
|
|
|
#8 | |
|
Membre du Club
![]() Inscription : mai 2009 Messages : 234 ![]() |
Citation:
Oui c'est ce que je souhaitais faire à la base mais j'avoue ne pas avoir tout compris du callback :/ J'vais me taper un p'tit tutos et essayer de voir ça...
__________________
Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut... Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini... |
|
|
|
00
|
|
|
#9 | ||
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 872 ![]() |
ce qu'on appelle "callback" n'est autre que la fonction qu'on exécute lorsqu'on reçoit la réponse du serveur.
dans ton cas : Code :
|
||
|
|
00
|
|
|
#10 |
|
Membre du Club
![]() Inscription : mai 2009 Messages : 234 ![]() |
Dans mon cas impossible...
Quant à async : false, marche pas :/
__________________
Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut... Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini... |
|
|
00
|
|
|
#11 |
![]() ![]() Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur Inscription : mars 2002 Messages : 30 069 ![]() |
il suffit de faire le return dans le success ...
__________________
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 |
|
|
00
|
|
|
#12 | |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 808 ![]() |
Citation:
@FotoXe33 : si pour toi attendre la réponse du serveur n'est pas une option possible, ni en synchrone ni en asynchrone, il te reste plus qu'à te tirer une balle dans le sexe ! ![]() Plus sérieusement, il doit y avoir une solution, mais pour t'aider, il faudrait nous en dire plus sur ce que tu cherches à faire...
__________________
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 JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
|
|
00
|
|
|
#13 | ||
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 872 ![]() |
quoi donc ? la solution du callback ? tu souhaites donc que ta fonction soit blocante en attendant la réponse ? donc synchrone (async:false) ?
Attention de ne pas mélanger les différentes solutions qu'on t'as proposé, pour l'ajout du paramètre async:false je t'ai bien précisé de reprendre ton code initial. (donc avec modification de variable et non retour dans la fonction succes) : Code :
|
||
|
|
00
|
|
|
#14 | |
|
Membre du Club
![]() Inscription : mai 2009 Messages : 234 ![]() |
Citation:
Si c'est possible, je veux attendre la réponse, et ne marche pas :/ Oui je n'allait pas mélanger tout. J'avais déjà le code que tu as posté mais sans succès :s
__________________
Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut... Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini... |
|
|
|
00
|
|
|
#15 | |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 808 ![]() |
Citation:
![]() Je sais pas pourquoi, mais je ne suis pas étonné ! Sinon, décris-nous un peu mieux ce que tu souhaites faire
__________________
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 JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
|
|
00
|
|
|
#16 |
|
Membre du Club
![]() Inscription : mai 2009 Messages : 234 ![]() |
Bon le principe :
Une fonction qui génére un identifiants unique à partir de certains éléments. FONCTION GENERER{
SI laClef N'EST PAS GENERER
laClef = ENVOIE_REQUETTE_AJAX()
retour = GENERER();
SINON
test = ENVOIE_REQUETTE_AJAX(laClef) // Pour tester si la clef est ok
SI test===VRAI
retour = laCLef;
SINON
retour = FAUX;
FIN SI
FIN SI
}
__________________
Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut... Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini... |
|
|
00
|
|
|
#17 | ||||
|
Membre Expert
![]() Matilin TorreÉtudiant Inscription : juin 2010 Messages : 679 ![]() |
Honni sois-tu, Willpower, d'avoir suggéré de l'Ajax synchrone ! Il y a toujours moyen de faire autrement.
@FotoXe33, je pense que tu as un problème avec les objets en JavaScript. Pour être précis, je pense que tu confonds la déclaration de la classe (ou plutôt du constructeur), et l'instanciation de l'objet. Par exemple, ceci est un constructeur : Code :
Code :
var monBidule = new Bidule('500kg', 'rose'); Si j'ai bien compris, tu veux lancer une requête Ajax au moment où tu construis ton objet. Ce que je vais dire va t'aider à comprendre les callbacks, je pense. Une requête Ajax c'est un peu comme un expresso : tu appuies sur le bouton et, en attendant que le café soir servi, tu fais autre chose. Maintenant, suppose que tu as une cafetière hyper moderne capable de se déplacer et de t'apporter ton café. En plus de ça, elle est relativement intelligente et comprend les ordres que tu lui donnes. Si tu appuies sur le bouton et que tu lui dis « apporte-moi mon café », elle va t'apporter ton café tout de suite alors qu'il n'est pas forcément prêt. C'est ce que fait ton script actuellement. Par contre, si tu lui dis « apporte-moi mon café quand il sera prêt », elle va attendre que le café soit prêt avant de te l'apporter. C'est ce que font les fonctions de callback. Code :
Une dernière chose : Pourquoi pas : ?
__________________
Disposition de clavier ergonomique française : Bépo |
||||
|
|
00
|
|
|
#18 | ||||
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 872 ![]() |
Citation:
Code :
Citation:
mais bon, je lui offrais une solution simple où il n'avait qu'à rajouter un paramètre booléen. |
||||
|
|
00
|
|
|
#19 | ||||||||||||||
|
Membre du Club
![]() Inscription : mai 2009 Messages : 234 ![]() |
Citation:
Citation:
Citation:
Citation:
Citation:
Citation:
Après plusieurs test (dont la solution de Watilin) et n'ayant pas de résultats plus concluant je vais tenter de mieux me faire comprendre. J'ai une classe maClass ayant pour contenu :
Je précise que SEUL générer_clef() doit être PUBLIC. On instancie (var monObj = new maClass();) puis on génére comme cela : var laClefGénérée = monObj.générer_clef();Il faut donc que générer_clef() ait l'algo suivant : Code :
__________________
Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut... Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini... |
||||||||||||||
|
|
00
|
|
|
#20 |
![]() ![]() Inscription : janvier 2011 Messages : 2 944 ![]() |
lu un peu en diagonal mais
1ére réflexion : pourquoi ne pas traiter coté serveur la validité de la clef? si on envoi null alors après test on en génère une et on la retourne, dans le cas contraire j'informe que c'est OK. 2éme réflexion : si tu es en asynchrone tu vas avoir intérêt à donner une adresse de retour à ta fonction, car retourner une valeur c'est bien dans le vide c'est moyen. Cela peut être l'appel à une méthode de ton objet qui va elle atteindre ta variable. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com