[RÉSOLU] [Javascript/HTML] Uncaught ReferenceError: x is not defined

Uncaught ReferenceError: x is not defined [RÉSOLU] [Javascript/HTML] - Javascript/Node.js - Programmation

Marsh Posté le 28-11-2018 à 10:26:55    

Bonjour !
 
Lors du chargement de ma page, j'ai cette erreur dans la console : "Uncaught ReferenceError: logo is not defined at onload". Je n'arrives pas à trouver d'où ca vient. L'idéex c'est que selon le temps, mon logo change. J'ai les logos, ils fonctionnent, mais j'arrive pas à les afficher avec XHR.  
 
Merci d'avance pour votre aide.
 

Code :
  1. var logoNeige;
  2. var logoSoleil;
  3. var logoVent;
  4. var logoBrouillard;
  5. var temps;
  6. var weather;
  7. var weather2;
  8. var weather3;
  9. var url = "https://api.openweathermap.org/data/2.5/weather?q=bidart&APPID=92146035fff315dd4b30cd1eb5996bb4";
  10. var donneesmet;
  11. var logotemps
  12. const xmlhttp = new XMLHttpRequest;
  13. xmlhttp.onreadystatechange = function logo(logotemps) {
  14.     if (this.readyState == 4 && this.status == 200) {
  15.         xmlhttp.addEventListener("load", reqListener);
  16.         xmlhttp.open("GET", url, true);
  17.         JSON.parse(xmlhttp)
  18.     }
  19.     function displayBlock(temps) {
  20.         logoNeige = document.getElementById("neige" );
  21.         logoVent = document.getElementById("vent" );
  22.         logoBrouillard = document.getElementById("brouillard" );
  23.         weather = donneesmet.weather[0].main
  24.         weather2 = donneesmet.weather[0].description
  25.         weather3 = donneesmet.wind.speed
  26.    
  27.         if (weather == "Snow" ) {
  28.             logoNeige.style.display="block";
  29.         } else if (weather3 > 0) {
  30.             logoVent.style.display="block";
  31.         } else if (weather2 == "Fog" ) {
  32.             logoBrouillard.style.display="block";
  33.         }
  34.     }
  35. }

 
 
Voici mon JS.
 

Code :
  1. <html>
  2.     <head>
  3.         <link rel="stylesheet" type="text/css" href="css/test.css"  media="all">
  4.         <script type="text/javascript" src="js/test.js"></script>
  5.         <title>Test HTML5</title>
  6.     </head>
  7.     <body onload="javascript:logo();">


 
Voici mon HTML


Message édité par wigleg le 29-11-2018 à 14:18:57
Reply

Marsh Posté le 28-11-2018 à 10:26:55   

Reply

Marsh Posté le 28-11-2018 à 10:39:15    

Bonjour,
 
Rigolo comme code :)

Code :
  1. xmlhttp.onreadystatechange = function logo(logotemps) {
  2.     if (this.readyState == 4 && this.status == 200) {
  3.         xmlhttp.addEventListener("load", reqListener);
  4.         xmlhttp.open("GET", url, true);
  5.         JSON.parse(xmlhttp)
  6.     }


devrait plutôt ressembler à ça =>  

Code :
  1. function logo(logotemps) {
  2.     if (this.readyState == 4 && this.status == 200) {
  3.         xmlhttp.addEventListener("load", reqListener);
  4.         xmlhttp.open("GET", url, true);
  5.         JSON.parse(xmlhttp)
  6.     }
  7. xmlhttp.onreadystatechange = logo;

Reply

Marsh Posté le 28-11-2018 à 10:46:41    

Je débute à peine c'est pour ça ^^'

Reply

Marsh Posté le 28-11-2018 à 10:48:34    

Merci.
 
Je viens d'essayer. Je n'ai plus l'erreur mais mon logo ne veux pas s'afficher.

Reply

Marsh Posté le 28-11-2018 à 11:41:04    

Pourquoi mon logo ne s'affiche pas dans ce cas là ?

Reply

Marsh Posté le 28-11-2018 à 14:25:16    

Tu peux debugger dans la console de ton navigateur en ajoutant des

Code :
  1. console.log(nom_de_ta_variable);


dans ton code.
 
La console de debuggage s'ouvre en faisant un clic droit inspecter l’élément dans ton navigateur.
 
Tu pourrais par exemple vérifier que ton json est bien récupéré ou que temp est bien conforme à ce que tu attends...
 
Sinon personnellement je passes par des bibliothèques (jquery, mootools ou autre) pour mes requêtes AJAX pour une plus grande compatibilité de navigateur, à voir si c'est nécessaire pour toi ou pas :
https://caniuse.com/#search=XMLHttpRequest


---------------
D3
Reply

Marsh Posté le 28-11-2018 à 14:32:12    

Tu devrais faire un https://codepen.io/ un http://jsfiddle.net/ ou nous donner un accès à une ressource en ligne, ce serait plus facile pour nous à debugger...
 
PS: Et tu devrais modifier

Code :
  1. 9. var url = "https://api.openweathermap.org/data/2.5/weather?q=bidart&APPID={maclefquejeneveuxpaspartagerpubliquement}";


Surtout si cette clef est privé, avant que Google et archive.org ne l'ajoutes dans leur cache...


Message édité par mechkurt le 28-11-2018 à 14:33:24

---------------
D3
Reply

Marsh Posté le 28-11-2018 à 14:43:56    

En fait la clef n'est plus valide due au grand nombre de requêtes que je lui ai envoyé. Du coup je vais mettre la clé d'exemple de Open Weather sur le codepen

Reply

Marsh Posté le 28-11-2018 à 14:49:03    

Reply

Marsh Posté le 28-11-2018 à 15:53:50    

J'ai avancé un peu en cherchant des tutoriaux de xhr en JS pur...
https://codepen.io/anon/pen/NEOvRq
Avec ça tu as maintenant un objet dont tu doit pouvoir récupérer la propriété qui t’intéresses !


---------------
D3
Reply

Marsh Posté le 28-11-2018 à 15:53:50   

Reply

Marsh Posté le 28-11-2018 à 16:32:00    

Merci !
 
Alors du coup maintenant j'ai le json parsé dans la console (nickel j'en avais besoin)
 
Maintenant plutot que de passer par "if" et "else if" pour afficher mes logos, je vais utiliser "switch case" (parce que mon patron me le demande ahah !)  
 
Je reviendrai si j'ai un autre problème, mais celui que j'avais de base est résolu. Merci beaucoup !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed