Modifier URL

Résolu/Fermé
EpiX - 26 juil. 2020 à 15:41
jordane45 Messages postés 38254 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 octobre 2024 - 15 août 2020 à 21:48
Bonjour,

J'aimerai modifier les paramètres de mon URL pour pouvoir y accéder par la suite avec un programme arduino. J'ai pu trouver le code pour faire ce que je veux avec un paramètre. J'ai repris le code de la réponse la plus likée sur ce site : https://stackoverflow.com/questions/6899097/how-to-add-a-parameter-to-the-url

J'aimerai toutefois pouvoir faire la même chose mais avec plusieurs paramètres comme 'priceMin' mais aussi 'pricemax'...
A voir également:

3 réponses

jordane45 Messages postés 38254 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 octobre 2024 4 692
28 juil. 2020 à 08:35
function finale(rouge,vert,bleu){
  var href = window.location.href;
	newuri = addOrUpdateUrlParam(href,'rouge',parseInt(rouge));
	newuri = addOrUpdateUrlParam(newuri,'vert',parseInt(vert));
	newuri = addOrUpdateUrlParam(newuri,'bleu',parseInt(bleu));
  window.location.href = newuri;
}

function addOrUpdateUrlParam(uri, key, value) {
  var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
  var separator = uri.indexOf('?') !== -1 ? "&" : "?";
  if (uri.match(re)) {
    return uri.replace(re, '$1' + key + "=" + value + '$2');
  }else{
    return uri + separator + key + "=" + value;
  }
}

1
Je me permets de déterrer ce topic car je rencontre encore des difficultés. J'essaye cette fois ci de rajouter du texte à l'url en plus du code couleur.


<body>
<button type="buttont" onclick="finale()";>Valider</button>
<input type="text" id="name" size="10">

</body>

<script>
var rouge;
var vert;
var bleu;
var input;
var href = window.location.href;

function finale(){

addOrUpdateUrlParam('rouge',parseInt(rouge));
addOrUpdateUrlParam('vert',parseInt(vert));
addOrUpdateUrlParam('bleu',parseInt(bleu));
input=document.getElementById("name").value;
addOrUpdateUrlParam('texte',input);

}

function addOrUpdateUrlParam(name, value)
{
var regex = new RegExp("[&\\?]" + name + "=");
if(regex.test(href))
{
regex = new RegExp("([&\\?])" + name + "=\\d+");
href=href.replace(regex, "$1" + name + "=" + value);
window.location.href = href;
}
else
{
if(href.indexOf("?") > -1){
href=href + "&" + name + "=" + value;
window.location.href = href}
else{
href=href+ "?" + name + "=" + value;
window.location.href = href }
}
}


Je ne comprends pas pourquoi la fonction marche parfaitement pour les couleurs tandis qu'elle ne marche qu'une seule fois avec le texte alors que le code est similaire.

PS: je n'y connais rien en Javascript, l'erreur est sans doute évidente mais pas pour moi
0
jordane45 Messages postés 38254 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 octobre 2024 4 692 > EpiX
11 août 2020 à 20:24
En même temps.. tu n'as mis qu'un seul texte...
0
EpiX > jordane45 Messages postés 38254 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 octobre 2024
12 août 2020 à 17:46
Je ne suis pas sûr de comprendre.

Si par exemple je souhaite que le nom d'un fruit apparaisse dans l'url. Pour cela j'ai créé une unique zone de texte ou l’utilisateur peut y inscrire le nom du fruit qu'il souhaite. J’espérais alors que l'utilisateur puisse s'il le souhaite, changer de nom de fruit et que de la même façon qu'avec les couleurs, l'url change. C'est pour cette raison que je n'ai créé qu'une seule zone de texte.
0
jordane45 Messages postés 38254 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 octobre 2024 4 692 > EpiX
12 août 2020 à 18:48
C'est plutot moi qui ne comprend pas ce que tu veux...;
Selon toi, quelle devrait être la forme de ton url ?
0
jordane45 Messages postés 38254 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 octobre 2024 4 692 > jordane45 Messages postés 38254 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 octobre 2024
12 août 2020 à 18:56
Je viens surtout de voir que tu as été capable de ne pas reprendre le code que je t'avais donné et qui fonctionnait .......;

Donc
<!DOCYYPE html>
<html lang="fr">
	<head>
	  <meta charset="utf-8"/>
	  <meta name="viewport" content="width=device-width,initial-scale=1.0"/>
	  <title>TEST</title>	 
	</head>
 
	<body>

    <button type="buttont" onclick="finale(10,20,40)";>Valider</button>
    <input type="text" id="name" size="10">
    <script>
      
       function finale(rouge,vert,bleu){  
        var href = window.location.href;
        newuri = addOrUpdateUrlParam(href,'rouge',parseInt(rouge));
        newuri = addOrUpdateUrlParam(newuri,'vert',parseInt(vert));
        newuri = addOrUpdateUrlParam(newuri,'bleu',parseInt(bleu));
        var input = document.getElementById("name").value;
        newuri = addOrUpdateUrlParam(newuri,'texte',input);
        window.location.href = newuri;
      }

      function addOrUpdateUrlParam(uri, key, value) {
        var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
        var separator = uri.indexOf('?') !== -1 ? "&" : "?";
        if (uri.match(re)) {
          return uri.replace(re, '$1' + key + "=" + value + '$2');
        }else{
          return uri + separator + key + "=" + value;
        }
      }
         
    </script>
  </body>
</html>
0
jordane45 Messages postés 38254 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 octobre 2024 4 692
Modifié le 26 juil. 2020 à 16:01
Bonjour,

Si tu as pris la solution la plus "liké"
Il te suffit d'appeller autant de fois que désiré, la fonction
addOrUpdateUrlParam('priceMin', 300);
addOrUpdateUrlParam('priceMax', 600);
addOrUpdateUrlParam('autretruc', "abcd");


ce qui donnera une url du genre

http://something.com/mobiles.php?priceMin=300&priceMax=600&autretruc=abcd

0
Bonjour,

Je vous remercie de votre réponse.

J'ai bien essayé de créer une fonction ( que j'ai appelé "finale") dans laquelle j’appelle plusieurs fois la fonction "addOrUpdateUrlParam" obtenue sur le sur le lien que j'ai transmis plus haut. J'ai fait ceci dans le but de créer un bouton qui lorsque j'aurai cliqué dessus, exécutera la fonction "finale".
Seulement, je n'ai pas le résultat escompté : si mes trois paramètres sont "rouge","vert" et "bleu" et que j'appelle trois fois "addOrUpdateUrlParam" , mon url ressemble à :
"http://something.com/mobiles.php?bleu=168"
et non: "http://something.com/mobiles.php?rouge=134&vert=18&bleu=168"

Je vous mets une partie de mon code si ce n'était pas assez clair:

<script>
function finale(rouge,vert,bleu){
addOrUpdateUrlParam('rouge',parseInt(rouge));
addOrUpdateUrlParam('vert',parseInt(vert));
addOrUpdateUrlParam('bleu',parseInt(bleu));
}

function addOrUpdateUrlParam(name, value)
{
var href = window.location.href;
var regex = new RegExp("[&\\?]" + name + "=");
console.log(href);
if(regex.test(href))
{
regex = new RegExp("([&\\?])" + name + "=\\d+");
window.location.href = href.replace(regex, "$1" + name + "=" + value);
}
else
{
if(href.indexOf("?") > -1)
window.location.href = href + "&" + name + "=" + value;
else
window.location.href = href + "?" + name + "=" + value;
}
}
</script>

<button type="buttont" onclick="finale(rouge,vert,bleu)";>Valider</button>

0