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 :

Fonction load dans une boucle while


Sujet :

jQuery

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Points : 74
    Points
    74
    Par défaut Fonction load dans une boucle while
    Bonjour,

    Mon but est de faire appel à plusieurs pages web pour en extraire leur contenu et les ajouter dans ma page (scrolling). Mais je dois d'abord faire appel à ma page 1 puis 2 etc... pour que les contenus soient afficher dans l'ordre. Et je ne sais pas à l'avance combien j'aurais de pages.
    Hors la fonction load (dans mon code suivant) est asynchrone du coup ma boucle while ne permet pas de faire appel à mes pages dans l'ordre..

    J'ai tenté une fonction récursive mais ça n'avait pas l'air de fonctionner mieux...

    Une idée?

    Merci.

    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
     
     
    function fetchPage(page,nbPages,urlStr){
    $("<div>").load(urlStr, function() {
          $(".maClasse").append($(this).html());
    });
     
    }
     
    ...
     
    	while( page <= nbPages){
    		var urlStr = "monURL;
    		 fetchPage(page,nbPages,urlStr);
    		 page++;
    	}

  2. #2
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 872
    Points : 3 716
    Points
    3 716
    Par défaut
    Bonjour,

    Le code est exécuté coté client ?

    N'y a-t-il un problème de same-origin policy ?

  3. #3
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 067
    Points : 17 152
    Points
    17 152
    Par défaut
    Salut

    Mauvais Copier/Coller ? ligne 13, il y a un problème de ".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var urlStr = "monURL";
    //Ou
    var urlStr = monURL;
    var urlStr = "monURL; // pas bon
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Points : 74
    Points
    74
    Par défaut
    Oui j'ai changé tout mon url par MonURL et j'ai oublié le guillemets c'est juste pour donner une idée.
    En fait je rappelle la meme page avec des paramètres différents ex: www.mapage.com?page=1&tag=untag puis www.mapage.com?page=2&tag=untag etc.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Points : 74
    Points
    74
    Par défaut
    J'ai enfin fini par trouver une solution en faisant un appel récursif dans la fonction load pour que la fonction suivante soit appelée uniquement quand le load a fini:

    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
     
    function addPages(page, categ, yr, nbPages,urlStr) {
    	$("<div>").load(urlStr + " .list-content", function() {
    		console.log(page);
    		$(".articleList").append("<div class='list-content'>" + $(this).find(".list-content").html() + "</div>");
    		page++;
    		if(page <= nbPages) {
    			urlStr = MonURL + "?pagenumber=" + page + "&category=" + categ + "&year=" + yr;
    			console.log(urlStr);
    			addPages(page, categ, yr, nbPages,urlStr);
     
    		}		
    	});
     
     
     
    }

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Points : 74
    Points
    74
    Par défaut
    Maintenant j'ai un autre soucis.. la page que je rappelle génère un script qui charge les vidéos sur ma page. Du coup quand je reprends le contenu de ma page pour l'insérer dans ma page courante mes vidéos n'y sont plus:-(... parce que ce script n'est pas chargée quand je fais mon load... je suppose..

    J'ai tenté un setTimeout quand j'appelle load(url) mais cela ne fonctionne pas non plus..

    Une idée pour résoudre ce problème?

    Merci

  7. #7
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 739
    Points
    4 739
    Par défaut
    faut que tu bosse sur les promesses.

    https://developer.mozilla.org/en-US/...bjects/Promise
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  8. #8
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 739
    Points
    4 739
    Par défaut
    Sinon, je dois avoir un bout de code quelque par qui montre comment faire des appels récursifs avec l'utilisation des promesses sur les fonctions asynchrones.

    Mais je sais pas si ce sera utile que je le retrouve vu que tu à laissé mon dernier message sans réponse depuis plus de 20 jours
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

Discussions similaires

  1. [PHP 5.2] Fonction d'extraction dans une boucle while
    Par Derdesders dans le forum Langage
    Réponses: 4
    Dernier message: 27/08/2016, 22h04
  2. fonction mail dans une boucle while
    Par tjoce dans le forum Langage
    Réponses: 5
    Dernier message: 23/04/2010, 19h39
  3. [Conception] Problème de test dans une boucle while
    Par Cyrius dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/11/2005, 19h07
  4. Réponses: 6
    Dernier message: 17/06/2005, 17h51
  5. [MFC] Dialog dans une boucle while
    Par oxor3 dans le forum MFC
    Réponses: 5
    Dernier message: 23/04/2004, 23h51

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