Есть ли способ получить URL-адрес без строки запроса?
У меня есть URL, как http://localhost/dms/mduserSecurity/UIL/index.php?menu=true&submenu=true&pcode=1235
.
Я хочу получить URL-адрес без строки запроса: http://localhost/dms/mduserSecurity/UIL/index.php
.
Существует ли какой-либо метод для этого в JavaScript? В настоящее время я использую document.location.href
, но он возвращает полный URL.
11 ответов:
Читайте о
Window.location
и еще ...Location
интерфейс:var url = [location.protocol, '//', location.host, location.pathname].join('');
Попробуйте:
document.location.protocol + '//' + document.location.host + document.location.pathname;
(NB:
.host
, а не.hostname
, так что порт тоже включается, если это необходимо)
Просто разрежьте строку, используя split (простой способ):
var myString = "http://localhost/dms/mduserSecurity/UIL/index.php?menu=true&submenu=true&pcode=1235" var mySplitResult = myString.split("?"); alert(mySplitResult[0]);
Чтобы получить все части URL, кроме запроса:
Обратите внимание, что это также включает хэш, если он есть (я знаю, что в вашем примере URL-адреса нет хэша, но я включил этот аспект для полноты). Чтобы исключить хэш, просто исключитеvar url = (location.origin).concat(location.pathname).concat(location.hash);
.concat(location.hash)
.Лучше использовать
concat
для объединения строк Javascript вместе (а не+
): в некоторых ситуациях это позволяет избежать таких проблем, как путаница типов.
Вот два метода:
<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>
Используйте свойства
window.location
var loc = window.location; var withoutQuery = loc.hostname + loc.pathname; var includingProtocol = loc.protocol + "//" + loc.hostname + loc.pathname;
Вы можете увидеть больше свойств в https://developer.mozilla.org/en/DOM/window.location