Existe-t-il une méthode pour obtenir url sans chaîne de requête dans le script java

J'ai une URL comme:

http://localhost/dms/mduserSecurity/UIL/index.php?menu=true&submenu=true&pcode=1235 

Je souhaite obtenir l'URL sans la chaîne de requête:

 http://localhost/dms/mduserSecurity/UIL/index.php 

Existe-t-il une méthode dans JavaScript, pas en PHP?

Actuellement, j'utilise

 var url = document.location.href; 

Mais il renvoie l'URL complète uniquement.

Essayez ceci: window.location.href.split('?')[0]

Lisez à propos de Window.location et l'interface de Location :

 var url = [location.protocol, '//', location.host, location.pathname].join(''); 
 location.toString().replace(location.search, "") 

Essayer:

 document.location.protocol + '//' + document.location.host + document.location.pathname; 

(NB: .host plutôt que .hostname afin que le port soit inclus aussi, si nécessaire)

 var url = window.location.origin + window.location.pathname; 

Si vous souhaitez également supprimer le hash, essayez celui-ci: window.location.href.split(/[?#]/)[0]

Il suffit de couper la chaîne en utilisant split (la manière facile):

 var myString = "http://localhost/dms/mduserSecurity/UIL/index.php?menu=true&submenu=true&pcode=1235" var mySplitResult = myString.split("?"); alert(mySplitResult[0]); 

Pour obtenir chaque partie de l'URL sauf pour la requête:

 var url = (location.origin).concat(location.pathname).concat(location.hash); 

Notez que cela inclut le hash, s'il y en a un (je suis conscient qu'il n'y a pas de hash dans votre URL d'exemple, mais j'ai inclus cet aspect pour l'exhaustivité). Pour éliminer le hash, supprimez simplement .concat(location.hash) .

Il est préférable d'utiliser concat pour rejoindre les chaînes JavaScript ensemble (plutôt que + ): dans certaines situations, il évite des problèmes tels que la confusion de type.

Voici deux méthodes:

 <script type="text/javascript"> var s="http://localhost/dms/mduserSecurity/UIL/index.php?menu=true&submenu =true&pcode=1235"; var st=s.substring(0, s.indexOf("?")); alert(st); alert(s.replace(/\?.*/,'')); </script> 

Que se passe-t-il: location.href.slice(0, - ((location.search + location.hash).length))

Utilisez les propriétés de window.location

 var loc = window.location; var withoutQuery = loc.hostname + loc.pathname; var includingProtocol = loc.protocol + "//" + loc.hostname + loc.pathname; 

Vous pouvez voir plus de propriétés à l' adresse https://developer.mozilla.org/fr/DOM/window.location

La plupart des réponses ici fonctionneront bien dans le navigateur, mais pas avec le javascript du côté serveur, où window / window.location n'existe pas. Certains autres ne prennent pas non plus en compte la possibilité d'un identificateur de fragment (#example) après la chaîne de requête.

J'ai écrit un petit composant qui fonctionnera dans ces deux situations. N'hésitez pas à l'importer si vous souhaitez l'utiliser.

Vous pouvez appeler parseUrl () avec une url arbitraire ou window.location pour utiliser l'URL en cours. Cela renverra un objet que vous pouvez utiliser pour reconstituer les parties d'URL dont vous avez besoin.

Exemple:

 var url = 'http://localhost/dms/mduserSecurity/UIL/index.php?menu=true&submenu=true&pcode=1235'; var urlObject = parseUrl(url); var newUrl = urlObject.protocol + '//' + urlObject.hostname + urlObject.path + urlObject.hash; 

Cela définira newUrl pour:

 http://localhost/dms/mduserSecurity/UIL/index.php 

De plus, cela n'est pas destructeur et sauvegarde la chaîne de requête originale dans urlObject.query et chaque paramètre individuel dans urlObject.params au cas où vous devriez les utiliser après avoir extrait l'url de base.