IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

boucles et conditions


Sujet :

jQuery

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2
    Points : 3
    Points
    3
    Par défaut boucles et conditions
    Bonjour, voilà j'ai un soucis avec une fonction "récursive" devant retourner des résultats en Ajax. Elle est censée s'appeler un certain nombre de fois (autant de fois qu'il y a de résultats à afficher) cependant elle s'appelle bien au delà de la limite et ce malgré mais différentes conditions !

    Après de nombreux tests avec des alert(), j'ai cru comprendre que le tout s'exécutait tellement vite que mes variables n'avaient pas le temps de s'incrémenter à chaque passage dans la boucle... c'est vraiment bizarre.

    Voici la fonction qui pose problème, sachant que si j'enlève la récursivité et que je la relance manuellement moi même, je n'ai pas le fameux problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    function itemLoad(){
    	currentb = parseInt(document.getElementById('currentb').value);
    	if(currentb<=maxb){
    		$.post("site-analyse-filter.php", { itemtoken: currentb }, function(data){
    			passage++;
     
    			if(currentb/2 == Math.round(currentb/2)){
    				expr = new RegExp("(result_0)", "i");
    				data = data.replace(expr, "result_2");
    				expr = new RegExp("(result_explore_0)", "i");
    				data = data.replace(expr, "result_explore_2");
    			}else{
    				expr = new RegExp("(result_0)", "i");
    				data = data.replace(expr, "result_1");
    				expr = new RegExp("(result_explore_0)", "i");
    				data = data.replace(expr, "result_explore_1");
    			}
     
    			htmldata = $('#globaldoc').html();
    			htmldata = htmldata+data;
     
    			$('#globaldoc').ajaxSuccess(function(request, settings){
    				if(passage<maxb) {
    					$('#globaldoc').html(htmldata);
    					currentb = parseInt(document.getElementById('currentb').value);
    					currentb = currentb + 1;
    					document.getElementById('currentb').value = currentb;
    					if(currentb<=maxb){ itemLoad(); }
    				}else{ /*alert(1); alert('passage : '+passage);*/ }
    			});
    		});
    	}
    	else{ }
    	if(currentb==maxb) {
    		$('#bodyload').hide();
    	}
    	/*if(passage>12) { alert('passage : '+passage); }*/
    }
    Ah oui j'oubliais, j'utilise la librairie jQuery dedans.

  2. #2
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 12
    Points : 13
    Points
    13
    Par défaut AJAX!!
    t'es en train d'utiliser AJAX(Asynchronous JavaScript and XML)

    c'est à dire ASYNCHRONE!!!!!!

    donc déjà la notion de la récursivité ne marche pas comme prévu

    remonte ta fonction récursive dans PHP et tout ira bien

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Impossible avec le "max execution time" de 30s, puis au niveau de PHP je fais des vérifications du nombre d'appels, mais j'ai l'impression que les résultats en trop viennent du cache, c'est vraiment bizarre.

    EDIT : D'après Firebug, sur une boucle de 12 passages (avec vérifications par conditions au niveau de JS et de PHP), j'ai au total 53 requêtes POST qui sont faites ! Bien entendu, seules les 12 premières requêtes retournent un résultat. Ce qui est bizarre c'est qu'à chaque passage j'incrémente également la valeur du nombre que j'envoie en POST de manière asynchrone et ce nombre se retrouve répété sur plusieurs requêtes. Par exemple, la 53ème a envoyé en POST "12".

    RE-EDIT : J'ai viré la récursivité et j'ai tout mis dans un while, ça fonctionne !!! Bon ben maintenant je saurais que récursivité et asynchrone ne font pas non ménage.

    Merci pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Boucle avec condition "perdu"
    Par guismoman33 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/06/2007, 10h38
  2. Problème de boucle et condition
    Par fantomas261 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 20/04/2007, 18h05
  3. [Tableaux] Boucles et conditions
    Par Hayabusa dans le forum Langage
    Réponses: 6
    Dernier message: 18/12/2006, 00h07
  4. Tirer les formules avec boucle et condition excel
    Par melodyyy dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 19/10/2006, 15h11
  5. boucle avec condition d'arret changeante
    Par NicoH dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2003, 11h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo