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.