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:
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 dune 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 ?