CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : Javascript probleme

DébutPage précedente
1
Page suivantePage suivante
nektos nektos
MP
Niveau 10
26 mars 2017 à 11:38:38

Voila le code

var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() { 
    if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
        var htmlResp = xmlHttp.responseText
        if(/(\/forums\/42.*?\.htm)"/.test(htmlResp))
            var s = htmlResp;
			var re = s.match(/(\/forums\/42.*?\.htm)"/g);
			for (i=0; i<re.length;i++) {
				var postOuRequest = new XMLHttpRequest();
				postOuRequest.onreadystatechange = function() {
					if (postOuRequest.readyState == 4 && postOuRequest.status == 200)
						var htmlPostOu = postOuRequest.responseText
						console.log(htmlPostOu)
				xmlHttp.open("GET", "http://www.jeuxvideo.com"+re[i], true);
				xmlHttp.send(null);
					
				} 
				
			}
    }
xmlHttp.open("GET", document.URL, true);
xmlHttp.send(null);

Pour pas vous perdre voila mon objectif : Parser la page des topics puis envoyer une requete a chaque lien trouvé qui va me donner un contenu de la page (ça va changer je veut mettre une condition)

mais ça marche pas et j'ai 3 erreurs

Première erreur : Uncaught TypeError: Cannot read property 'match' of undefined
at XMLHttpRequest.xmlHttp.onreadystatechange (<anonymous>:7:14)
at <anonymous>:21:9

La deuxieme et troisième erreur prennent du temps à arriver ce qui signifie que le script a fonctionner

2 : Uncaught TypeError: Cannot read property 'match' of undefined
at XMLHttpRequest.xmlHttp.onreadystatechange (<anonymous>:7:14)

3 : Uncaught TypeError: Cannot read property 'match' of undefined
at XMLHttpRequest.xmlHttp.onreadystatechange (<anonymous>:7:14)

Enfaîte c'est bizarre car selon l'erreur s est une valeur indefini et je ne sais pas pourquoi

si vous avez des pistes je suis disponible

merci d'avance

WatchItBurn WatchItBurn
MP
Niveau 10
26 mars 2017 à 13:26:14

Tu as oublié les accolades à tes if

nektos nektos
MP
Niveau 10
26 mars 2017 à 13:42:26

voila le code corrigé

var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() { 
    if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
        var htmlResp = xmlHttp.responseText
        if(/(\/forums\/42.*?\.htm)"/.test(htmlResp))
            var s = htmlResp;
			var re = s.match(/(\/forums\/42.*?\.htm)/g);
			for (i=0; i<re.length;i++) {
				var postOuRequest = new XMLHttpRequest();
				postOuRequest.onreadystatechange = function() {
					if (postOuRequest.readyState == 4 && postOuRequest.status == 200) {
						var htmlPostOu = postOuRequest.responseText
						console.log(htmlPostOu)
					}
				}
				xmlHttp.open("GET", "http://www.jeuxvideo.com"+re[i], true);
				xmlHttp.send(null);
			}	
		}
    }
xmlHttp.open("GET", document.URL, true);
xmlHttp.send(null);

maintenant dans la console chrome ça me retourne juste undefined ça ne fait pas le resultat que je veut (console.log(htmlPostOu)

donc que devrais je faire

GrandeGuerre GrandeGuerre
MP
Niveau 11
26 mars 2017 à 16:09:49
if(/(\/forums\/42.*?\.htm)"/.test(htmlResp))

Pas d'ouverture des accolades, voulu ? Là seule la ligne suivante sera faite de manière conditionnelle, et tu utilises la valeur affectée ensuite. Mauvais plan.

var htmlPostOu = postOuRequest.responseText
console.log(htmlPostOu)

Avec des points virgules ça risque pas de faire de mal. :hap:

Pour le reste, je suis pas sûr d'avoir saisi le but du code. Mais si t'as ce genre de bug le console.log tu peux l'utiliser ailleurs, autant faire du débug de A à Z.

nektos nektos
MP
Niveau 10
26 mars 2017 à 16:18:09

Le 26 mars 2017 à 16:09:49 GrandeGuerre a écrit :
if(/(\/forums\/42.*?\.htm)"/.test(htmlResp))
Pas d'ouverture des accolades, voulu ? Là seule la ligne suivante sera faite de manière conditionnelle, et tu utilises la valeur affectée ensuite. Mauvais plan.

var htmlPostOu = postOuRequest.responseText
console.log(htmlPostOu)

Avec des points virgules ça risque pas de faire de mal. :hap:

Pour le reste, je suis pas sûr d'avoir saisi le but du code. Mais si t'as ce genre de bug le console.log tu peux l'utiliser ailleurs, autant faire du débug de A à Z.

la condition j'ai hésité à l'enlever car je voulais pas que mon script s'enclenche n'importe ou mais du coup ta raison elle sert a rien je vais l'enlever

sinon pour les accolades et les points virgule c'est ma faute juste car j'avais pas trop touché au code depuis longtemps du coup on perd les habitudes

sinon merci pour ces explications

Message édité le 26 mars 2017 à 16:21:21 par nektos
nektos nektos
MP
Niveau 10
26 mars 2017 à 16:35:53

Sinon je vais refaire un résumer de l'objectif

imaginons que je suis sur cette page :

https://www.jeuxvideo.com/forums/0-51-0-1-0-1-0-blabla-18-25-ans.htm

Je vais donc envoyer une requête quête pour obtenir une forme brute du code source

ensuite je récupère le lien de tout les topics

:d) Et a ce stade je pense que j'aurais pu me faciliter la tache avec ça :

  var parser=new DOMParser();
  var xmlDoc=parser.parseFromString(responseText,"text/xml");
  var tds = xmlDoc.getElementsByTagName("td");

Et j'ai décidé de garder les regex pour récupérer les liens

Ensuite avec les liens menant au topic je refait une requête pour chaque lien ainsi je pourrait obtenir le contenu de chaque topic (et moi j'ai envie de vérifier si un message est présent ou non depuis la liste des sujets)

nektos nektos
MP
Niveau 10
28 mars 2017 à 19:58:17

j'ai fait ce code

var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() { 
	if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
		var htmlResp = xmlHttp.responseText;
		var parser=new DOMParser();
		var xmlDoc=parser.parseFromString(htmlResp,"text/xml");
		console.log(xmlDoc);
		var cell = xmlDoc.getElementsByClassName("lien-jv topic-title");
		for (i=0; i<cell.length + 1; i++) {
			console.log(cell[i]);
		}
    }
}
xmlHttp.open("GET", document.URL,true); // true for asynchronous 
xmlHttp.send(null);

et dans la console de commande CHROME je trouve qu'il y a une erreur (parse error) https://www.noelshack.com/2017-13-1490723861-6b7f513bf62.png

si vous avez une idée d'ou ça peut provenir je suis ouvert

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment