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 :
Globalement, quand j’active TODO(), les analyses se font apparemment, mais j’ai quelques problèmes à l’exécution :
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 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>
- 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 ?
Partager