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

JavaScript Discussion :

Compilation de listes sur une page en JavaScript


Sujet :

JavaScript

  1. #1
    Membre averti
    Homme Profil pro
    Non-informaticien
    Inscrit en
    Ao�t 2013
    Messages
    37
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Non-informaticien

    Informations forums :
    Inscription : Ao�t 2013
    Messages : 37
    Par d�faut Compilation de listes sur une page en JavaScript
    Bonjour � tous,

    �tant toujours tr�s n�ophyte en JavaScript, je voudrais vous parler d'un souci (ou plut�t : de soucis) que je rencontre avec une page et un programme connectant JavaScript et Python.

    Pr�sentation du code : il s�agit d�un code javascript sur une page html qui part d�une liste d�URL sources (variable listeadresses dans le script js), et appelle un module en Python via une page PHP pour analyser le code source desdites pages et retenir une liste d�URL d�articles qui s�y trouvent, qui seront compil�s dans un fichier listeadresses.json . Le but est d�alimenter une liste d�URL d�articles (variable listeURL dans le script js) et de la stocker dans la bo�te de texte BoiteTexteResume.

    Voici le code :

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    <script src="js/d3.js"></script>
    <script src="js/underscore-min.js"></script>
    <script src="js/SetExtraits.js"></script>
    <script src="js/jquery.js"></script>
     
    <script>
      var GraphIDF;
     
        // affichage par défaut au lancement
     
        window.onload = function()
        {
            //Création des boites de textes
     
            var BoiteTexte = document.getElementById("txtSonder");
     
            var BoiteTexteResume = document.getElementById("txtResume");
    		BoiteTexteResume.value="";
     
            var BoiteTexteCompil = document.getElementById("txtCompil");
    		BoiteTexteCompil.value="";
     
    	var listeURL=[];	
     
           var listeadresses=["http://www.tribune-assurance.fr/","http://variances.eu/","http://www.argusdelassurance.com/"];
     
     
            function TODO()
            {
               	listeadresses.forEach(function(adressesource){
     
    				var xhr = new XMLHttpRequest();
     
    				xhr.open("GET", [adresse d’une page PHP qui appelle un module Python qui crée un fichier listeadresses.json], true);
    				xhr.onreadystatechange = function()
    				{
    					if (xhr.readyState == 4)
    					{
    						sourceAdresses= "[Répertoire racine]/listeadresses.json";
     
    						d3.json(sourceAdresses, function (json)
    						{
                                                            var listejson=[];
                                                            listejson=[json[adressesource]];
    							listejson.forEach( function(testURL)
    							{
    								listeURL.push(testURL);
    							})
    						});
     
    						BoiteTexteResume.value=listeURL;
     
                                             }
                                    }
     
    				xhr.send();
     
    			})
            }
     
    </script>
    Globalement, quand j�active TODO(), les analyses se font apparemment, mais j�ai quelques probl�mes � l�ex�cution :

    - 1) les lancements de programmes sur les trois adresses dans listeadresses (appel de la variable xhr) se font successivement, mais les incr�mentations de r�sultats dans listeURL (appel � d3.json�) ne se font qu�apr�s ;

    - 2) les r�sultats trouv�s et stock�s dans listeadresses.json pour chaque URL source ne sont pas tous int�gr�s dans BoiteTexteResume, et apparemment pas dans listeURL (je vois �a en affichant le contenu de listeURL dans un alert() � chaque modification de son contenu). A chaque fois, il n�y a que les r�sultats de l�une des trois adresses test�es dans listeadresses qui se retrouvent dans BoiteTexteResume.

    Quelles seraient les causes de cela selon vous ?

  2. #2
    R�dacteur

    Avatar de danielhagnoul
    Homme Profil pro
    �tudiant perp�tuel
    Inscrit en
    F�vrier 2009
    Messages
    6 389
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant perp�tuel
    Secteur : Enseignement

    Informations forums :
    Inscription : F�vrier 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par d�faut


    AJAX est asynchrone !

    Vous savez quand la transaction commence, mais jamais quand elle ce termine.

    Dans le cas de plusieurs transactions lanc�es quasi simultan�ment vous obtiendrez les r�ponses dans le d�sordre.

    Documentation : https://developer.mozilla.org/fr/docs/AJAX

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues � un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre averti
    Homme Profil pro
    Non-informaticien
    Inscrit en
    Ao�t 2013
    Messages
    37
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Non-informaticien

    Informations forums :
    Inscription : Ao�t 2013
    Messages : 37
    Par d�faut
    Merci danielHagnoul,

    en effet, l'ordre est asynchrone, m�me si je s�pare les fonctions sur ce mode :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
            function TODO()
            {
               	listeadresses.forEach(function(adressesource){
    				alert("ADRESSE SOURCE : "+adressesource);
    				SONDAGE(adressesource);
    			})
    		}
     
     
            function SONDAGE(adressesource)
            {
            ...}
    ...mais pour le deuxi�me point que j'aborde : pourquoi listeURL ne semble pas s'incr�menter avec les trois s�ries de r�sultats correspondants aux trois sources ? Y a-t-il quelque chose dans la fa�on dont je d�clare les variables qui l'explique ?

Discussions similaires

  1. [WSS3] Afficher plusieurs listes sur une page
    Par Troopers dans le forum SharePoint
    R�ponses: 2
    Dernier message: 25/06/2009, 15h01
  2. [Javascript] rediriger sur une page en javascript
    Par tioseb dans le forum G�n�ral JavaScript
    R�ponses: 4
    Dernier message: 15/02/2006, 14h55
  3. javascript sur une page creation flash mx
    Par hadjplasma dans le forum G�n�ral JavaScript
    R�ponses: 3
    Dernier message: 17/08/2005, 12h06
  4. [Struts]Affiche d'une liste sur plusieurs pages
    Par guillaume_85 dans le forum Struts 1
    R�ponses: 3
    Dernier message: 24/06/2005, 20h23
  5. Liste d�roulante pointant sur une page
    Par krfa1 dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 18/03/2005, 09h26

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