Есть ли способ получить 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.

Ответ 1

Попробуйте следующее: window.location.href.split('?')[0]

Ответ 2

Читайте о Window.location и Location интерфейс:

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

Ответ 3

location.toString().replace(location.search, "")

Ответ 4

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

Ответ 5

Если вы также хотите удалить хэш, попробуйте следующее: window.location.href.split(/[?#]/)[0]

Ответ 6

Try:

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

(NB: .host, а не .hostname, чтобы порт также включался, если это необходимо)

Ответ 7

просто вырезаем строку с помощью split (простой способ):

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

Ответ 8

Чтобы получить каждую часть URL-адреса, кроме запроса:

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

Обратите внимание, что это также включает хеш, если он есть (я знаю, что нет хеша в вашем примере URL, но я включил этот аспект для полноты). Чтобы исключить хэш, просто исключите .concat(location.hash).

Лучше использовать concat для объединения строк Javascript вместе (а не +): в некоторых ситуациях он избегает таких проблем, как путаница типов.

Ответ 9

Вот два метода:

<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>

Ответ 10

Как насчет этого: location.href.slice(0, - ((location.search + location.hash).length))

Ответ 11

Использовать свойства 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

Ответ 12

Большинство ответов здесь отлично работают в браузере, но не на стороне сервера javascript, где window/window.location не существует. Некоторые другие также не учитывают возможность идентификатора фрагмента (# пример) после строки запроса.

Я написал небольшой компонент, который будет работать в обеих этих ситуациях. Не стесняйтесь импортировать его, если вы хотите его использовать.

Вы можете вызвать parseUrl() с произвольным URL или окном .location для использования текущего URL-адреса. Это вернет объект, который вы можете использовать, чтобы объединить части, которые вам нужны.

Пример:

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;

Это установит newUrl в:

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

Кроме того, это не разрушительно и сохранит исходную строку запроса в urlObject.query и каждый отдельный параметр в urlObject.params, если вам нужно использовать их после извлечения базового url.

Ответ 13

Вот подход с использованием интерфейса URL():

new URL(location.pathname, location.href).href