|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : mai 2009 Messages : 234 ![]() |
Bonjour,
J'ai le script suivant, et son comportement est plus que louche... Code :
1) On affiche une première fois la page (via la fonction) avec le résultat de la requête. 2) Au bout de 30 secondes, on incrémente i de 1, et on redemande un envoie de requête. - Si la requête retourne quelque chose, on affiche la page - Sinon, on remet i à 1 La boucle est infinit et c'est ce que je souhaite. D'où vient le PB svp ? Cela fait plusieurs heures que je me casse les dents la dessus et je ne vois vraiment pas... Merci d'avance.
__________________
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 | ||||
|
Expert Confirmé
![]() danseur Inscription : août 2003 Messages : 2 667 ![]() |
je te suggère de remplacer
Code :
Code :
|
||||
|
|
00
|
|
|
#3 |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 802 ![]() |
Tout d'abord, ton code me semble assez maladroit : mélanger du JavaScript pur et jQuery peut être problématique...
Sinon, ton appel AJAX est-il synchrone ? Parce que si ce n'est pas le cas, la fonction nextContent() renverra toujours false et tu rentreras toujours dans le if...
__________________
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 |
|
Membre du Club
![]() Inscription : mai 2009 Messages : 234 ![]() |
Tout d'abord merci à vous deux pour vos réponses.
J'essaierais dès demain ta méthode javatwister. Quant à ta question Bovino, je ne serais te dire : j'utilise HTML_AJAX, un plugin pear, donc qu'en est-il ? De plus, je suis d'accord que mélanger JS et jQuery est très salle, saurais-tu comment éviter cela ? Merci d'avance.
__________________
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
|
|
|
#5 | ||
|
Membre du Club
![]() Inscription : mai 2009 Messages : 234 ![]() |
Bon j'ai un peut avancé, notamment en éliminent le plus possible de JS pur :
Code :
1) A parement supersized "block" le script (le fadeIn ne s'exécute jamais). 2) Le i ne s'incrémente pas comme il faut : j'ai d'abord le premier contenu, puis encore le premier, et ensuite que le deuxième en boucle (il ne revient jamais à 1)... Merci d'avance pour votre aide. N.B : y aurait-il moyen d'exécuter d'abord une fonction puis de faire patienter le script x secondes ? Car ici il attend d'abord les x secondes puis exécute le code demandé, ce qui me fait faire quelque chose de très moche avant ma boucle...
__________________
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 : 847 ![]() |
Citation:
si l'appel à 2 renvoie true, ton prochain appel se fera sur 3. Autrement i vaudra 1 et ++i faudra donc 2, ton prochain appel se fera donc de nouveau sur 2. Javatwister t'as proposé la solution : if( nextContent ( i++ )) Pourquoi l'as-tu transformé en if( nextContent( ++i)) ? Ensuite rien à voir avec ton problème mais la fonction eval est une abomination, uitilise plutôt une des méthodes de l'objet Array. ( désolé étant sur mon gsm, je n'ai pas envie de chercher laquelle et encore moins de te proposer une solution sans l'avoir testée) :-) Édit: en fait c'est pas normal que tes 2 premiers appels se fassent sur 1. En lisant ton code, ton premier appel devrait se faire sur le nbr 2 et les suivants sur 2 ou plus. Pour ton problème d'appel tout au début et puis de polo toutes les 5 sec, ne connaissant pas les possibilités qu'offre la méthode doTimeout, je ne peux que te suggérer de faire : Code js :
|
|||||
|
|
00
|
|
|
#7 | ||
|
Membre du Club
![]() Inscription : mai 2009 Messages : 234 ![]() |
Citation:
Citation:
Si vous avez d'autres méthodes je suis tout ouï
__________________
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
|
|
|
#8 | ||
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 847 ![]() |
pour le eval, je suis sur que si tu tape"array javascript" dans Google, tu trouveras une méthode qui resoud ton problème. Autrement je regarderai ça se soir chez moi.
Ps: j ai édité mon précédent message pendant ta réponse. Pour le i, peut-etre que la fonction doTimeout à été codé par un abruti du cerveau et qu'il utilise la variable i. Essaie p-e de remplacer i partout avec un autre nom. :-) Édit: en fait les libraires tout autant que devrait définir vos variables globales dans un objet du genre : Code js :
|
||
|
|
00
|
|
|
#9 | ||
|
Membre du Club
![]() Inscription : mai 2009 Messages : 234 ![]() |
Merci pour toutes tes réponses qui m'ont énormément aidé !
Voici mon code à présent : Code :
Je laisse quand même le post ouvert jusqu'a ce que je trouve la fonction remplaçant eval() (des fois que j'aurais des PB). Merci en tout cas.
__________________
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
|
|
|
#10 |
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 847 ![]() |
La réponse était deja dans ton code en fait :
allSlides = infos[3].split(','); Si ton objet valait un truc du genre : "Machin1, machin2, machin3" Ou si j'ai mal compris et que ton objet de base avait deja des crochets (mais dans ce cas la tu n'aurais pas remis des crochetssupplémentaires dans eval ) du genre : "[Machin1, macgin2, machin3]" Alors tu fais : allSlides = infos[3].substring(1, -1).split(','); :-) Édit: non-testé -> je ne garanti pas le résultat. |
|
|
00
|
|
|
#11 |
|
Membre du Club
![]() Inscription : mai 2009 Messages : 234 ![]() |
Merci en tout cas.
J'avais déjà tester et en fait ce plugin est vraiment zarb. J'ai déjà émi des soupçons plus haut mais je les ai confirmés tout à l'heure : c'est bel et bien une chaine de caractère entouré de croché et non un tableau. Bref, en parlant de ça j'y retourne car il me fait vraiment tourné en bourique ce module... Merci encore et 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
|
|
|
#12 | |
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 847 ![]() |
Citation:
|
|
|
|
00
|
|
|
#13 | |
|
Membre du Club
![]() Inscription : mai 2009 Messages : 234 ![]() |
Citation:
Merci en tout cas
__________________
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
|
|
|
#14 | |
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 847 ![]() |
Citation:
Ma première solution fait exactement pareil que ton eval mais proprement. (enfin en théorie car j'ai toujours pas testé. ) Édit: en fait je ne suis même pas sûr de ce que ton eval renvoie, mais ce que je sais, c'est que c'est une abomination de l'utiliser. (sauf cas exceptionnels, mais pas ici. Si t'as réellement besoin d'un string alors tu fait : allSlides = "[" + infos[3] + "]"; |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com