Changer url d'un onclick en fonction d'une variable ?

Changer url d'un onclick en fonction d'une variable ? - HTML/CSS - Programmation

Marsh Posté le 15-01-2024 à 21:30:49    

Bonjour,
 
j'ai un fichier html qui me sert d'interface pour piloter un relais.
Mon relais est sur un esp dont l'adresse peut varier. (je ne veux pas qu'elle soit fixe)
Donc le index.html, je récupère la variable Address_IP
 
J'ai 4 bouton dont le onclick doit pointer vers cette adresse ip.
 
Comment dois-je procéder.
 
Evidemment si l'ip est fixe, je mets ça dans mon fichier html et tout fonctionne
 
 <button onclick="location.href = 'http://192.168.1.111/relais2off'" class="w3-btn w3-green w3-border" id="maj">OFF</button><span id="savemsg"></span>
 
Mais comment faire pour ajuster l'ip à la volée ?
 
Merci pour votre aide.


Message édité par davidmarli le 15-01-2024 à 21:31:17

---------------
Matheux Fou - https://afficheur-tempo.fr - TEMPO BOX pour abonnés TEMPO EDF
Reply

Marsh Posté le 15-01-2024 à 21:30:49   

Reply

Marsh Posté le 15-01-2024 à 22:15:15    

Javascript...


---------------
Si vous ouvrez un sujet merci de ne pas le "laisser mourir" subitement et de le marquer comme "résolu" le cas échéant!
Reply

Marsh Posté le 15-01-2024 à 22:24:42    

oui, mais encore ?
 
Avec un script javascript je recupere deja la variable addrip.
ensuite j en fais quoi ?


Message édité par davidmarli le 15-01-2024 à 22:24:54

---------------
Matheux Fou - https://afficheur-tempo.fr - TEMPO BOX pour abonnés TEMPO EDF
Reply

Marsh Posté le 16-01-2024 à 08:02:00    

Un truc du genre, attention à la portée de la variable ip_dyn, faut qu'elle soit globale si tu veux pouvoir y accéder depuis des fonctions différentes...
https://www.pierre-giraud.com/javas [...] -fonction/

Code :
  1. <script>
  2. let ip_dyn = '192.168.1.111';
  3. function Goto(page) {
  4.     location.href = 'http://'+ip_dyn+'/'+page;
  5. }
  6. <script>
  7. <button onclick="Goto('relais2off');'" class="w3-btn w3-green w3-border" id="maj">OFF</button>
  8. <button onclick="Goto('relais2on');'" class="w3-btn w3-green w3-border" id="maj">ON</button>


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

Marsh Posté le 16-01-2024 à 13:41:35    

mais pour que ma varable soit globale, il faur la placer a quel endroit du fichier html ?
 
merci


---------------
Matheux Fou - https://afficheur-tempo.fr - TEMPO BOX pour abonnés TEMPO EDF
Reply

Marsh Posté le 16-01-2024 à 15:20:37    

[:mechkurt:2]  
Faut lire l'article que j'ai linké...
 
Grosso merdo faut qu'elle soit déclaré en dehors des fonctions (goto ou actualisation de l'ip) et avant que l'une de celle-ci soit utilisés...


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

Marsh Posté le 16-01-2024 à 21:35:59    

merci, je m'étais mal exprimé, en fait je pensais qu'on pouvait la déclarer en dehors d'un <script> </script>, carrément dans le corps du html.


---------------
Matheux Fou - https://afficheur-tempo.fr - TEMPO BOX pour abonnés TEMPO EDF
Reply

Marsh Posté le 17-01-2024 à 08:37:53    

Ben il te faut bien un script pour aller chercher "dynamiquement" ton adresse IP non ?
Je doutes qu'il soit en html... ;)


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

Marsh Posté le 17-01-2024 à 15:50:21    

Merci bp, ça marche parfaitement (il y a juste des guillemets simple en trop sur les lignes button, après les points-virgules.)
 
J'ai maintenant une autre question.
 
1) Comment gérer un temps d'attente trop long ?
 En effet si le device en ip_dyn, ne répond pas au bout de 5 s, je voudrais stopper le chargement de la page et revenir à la page de départ. Est-ce possible ?
2) Quand l'adresse réponde, elle retourne une chaine de caractères du style ON,OFF (texte dans un html renvoyé par l'adresse ip en question)
Je voudrais gérer ces 2 valeurs après le chargement de la page avec la fonction Goto.
Là aussi est-ce possible ?
 
Merci.


---------------
Matheux Fou - https://afficheur-tempo.fr - TEMPO BOX pour abonnés TEMPO EDF
Reply

Marsh Posté le 17-01-2024 à 17:12:17    

La on s'éloigne de la demande initiale. Histoire de ne pas perdre de temps: Donne TOUTES les contraintes/fonctions que tu veux rajouter/avoir et le code existant (entre balises).


---------------
Si vous ouvrez un sujet merci de ne pas le "laisser mourir" subitement et de le marquer comme "résolu" le cas échéant!
Reply

Marsh Posté le 17-01-2024 à 17:12:17   

Reply

Marsh Posté le 17-01-2024 à 17:52:01    

Du coups, il ne vaudrait mieux ne pas aller sur la page mais plutôt faire un appel en AJAX qui récupère et traite la réponse...


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

Marsh Posté le 17-01-2024 à 18:51:55    

Bon, en fait je me suis débrouillé autrement.
 
Finelament depuis l'interface web (donc depuis mon fichier html), en cliquant sur le bouton, j'appelle une des fonctions (relais1on ou relais1off) sur le serveur contenant la page web.
Ce serveur connait l'adresse ip de l'autre péripherique (celui qui était à ip_dyn).
Avec un http.get (depuis le serveur) je regarde la réponse du périph qui commande le relais.
 
Bref, ça à l'air un peu tordu comme ça, mais ça fonctionne.
 
En revanche, je veux bien quelques explications concernant Ajax, car je ne connais pas du tout.
Ajax permettrait de faire quoi du coup ?


---------------
Matheux Fou - https://afficheur-tempo.fr - TEMPO BOX pour abonnés TEMPO EDF
Reply

Marsh Posté le 17-01-2024 à 18:58:47    

Le lien est cliquable https://developer.mozilla.org/fr/docs/Glossary/AJAX
 
C'est un peu l'équivalent de ton appel de serveur à serveur mais sauf que la c'est client serveur. :D


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

Marsh Posté le 21-01-2024 à 20:22:01    

davidmarli a écrit :

merci, je m'étais mal exprimé, en fait je pensais qu'on pouvait la déclarer en dehors d'un <script> </script>, carrément dans le corps du html.


Oui, tu peux passer l'IP en paramètre ton ta page html.
Ex : https://mapage.html?ip=xxx.xxx.xxx.xxx
 
Après, dans ta page html, tu mets un javascript qui va récupérer la valeur du paramètre "ip" qui est contenu dans location.href. Tu mets la valeur dans une variable que tu mettras dasn l'url sur laquelle tu veux cliquer ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

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