157 votes

Comment obtenir la chaîne de requête de l'URL actuelle avec JavaScript ?

J'ai une URL comme celle-ci :

http://localhost/PMApp/temp.htm?ProjectID=462

Ce que j'ai besoin de faire, c'est de récupérer les détails après le ? (chaîne d'interrogation) - c'est-à-dire ProjectID=462 . Comment puis-je obtenir cela en utilisant JavaScript ?

Voici ce que j'ai fait jusqu'à présent :

var url = window.location.toString();
url.match(?);

Je ne sais pas quoi faire ensuite.

0 votes

0 votes

@Cupcake : Cette question concerne l'extraction des paramètres, celle-ci ne concerne que l'obtention des paramètres. location.search

0 votes

Voter pour rouvrir, le duplicata marqué est une demande de bibliothèque, alors que cette question vise à obtenir du code js.

2voto

Grsmto Points 1357

Vous devriez jeter un coup d'œil à l'API URL, qui contient des méthodes d'aide pour réaliser cette tâche, comme la fonction URLSearchParams : https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams

Cette fonctionnalité n'est actuellement pas prise en charge par tous les navigateurs modernes. N'oubliez donc pas d'utiliser le polyfill (Polyfill disponible en utilisant https://qa.polyfill.io/ ).

2voto

  var queryObj = {};
   if(url.split("?").length>0){
     var queryString = url.split("?")[1];
   }

maintenant vous avez la partie requête dans queryString

Le premier remplacement supprimera tous les espaces blancs, le second remplacera toutes les parties '&' par "," et enfin le troisième remplacera les signes '=' par " :".

queryObj = JSON.parse('{"' + queryString.replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g,'":"') + '"}')

Disons que vous avez une requête comme abc=123&efg=456 . Avant d'être analysée, votre requête est convertie en quelque chose comme {"abc" : "123", "efg" : "456"}. Maintenant, quand vous analyserez ceci, vous obtiendrez votre requête dans un objet json.

2voto

Siddesh Bhalke Points 939

Convertissez-le en tableau puis séparez-le avec " ?".

var url= 'http://localhost/PMApp/temp.htm?ProjectID=462';

url.split('?')[1];     //ProjectID=462

2voto

allenhwkim Points 6012

8 ans plus tard, pour une seule phrase

  const search = Object.fromEntries(new URLSearchParams(location.search));

L'inconvénient, c'est qu'il ne fonctionne pas avec IE11.

Pour expliquer

  1. L'interface URLSearchParams définit des méthodes utilitaires permettant de travailler avec la chaîne de requête d'une URL. (De , https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams )
  2. La méthode Object.fromEntries() transforme une liste de paires clé-valeur en un objet. (De, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries )

    // For https://caniuse.com/?search=fromEntries

    Object.fromEntries(new URLSearchParams(location.search)) {search: "fromEntries"}

1voto

insign Points 156
q={};location.search.replace(/([^?&=]+)=([^&]+)/g,(_,k,v)=>q[k]=v);q;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X