Sergey Alexandrovich Kryukov
Вот как вы можете получить URL текущей страницы:
var url = window.location; // object, not a string
var urlString = window.location.href;
Вот как вы можете разобрать эту строку, чтобы получить объект с парами ключ-значение, представляющими параметры запроса:
function parseQuery(url) {
var result = {};
var parameters = window.location.search;
// returns query string after '?', which can be empty
if (!parameters) return result;
parameters = parameters[1].split("&");
for (var parameter in parameters) {
var keyValue = parameters[parameter].split("=");
result[keyValue[0]] = decodeURIComponent(keyValue[1]);
}
return result;
}
// ...
// usage:
// let's assume the url is http://www.myDomain.tld?first=1&second=2
var test = parseQuery(window.location.href);
var first = test.first; // returns 1
var second = text.second; // returns 2
// same thing:
first = test["first"]; // returns 1
second = text["second"]; // returns 2
Да, я проверил его перед отправкой. :-)
Обратите внимание, что моя функция не учитывает все патологические случаи. Вы можете использовать его как оно, тогда вы можете иметь дело с
undefined
объекты, возвращаемые в виде значений, и так далее. Или вы можете добавить некоторые проверки, в соответствии с вашими предположениями о строке запроса и вашими требованиями.
[EDIT] я улучшил свой образец кода в соответствии с предложениями Ричарда Диминга в его комментариях к ответу, см. ниже.
—СА
Richard Deeming
Вы могли бы использовать location.search
чтобы извлечь строку запроса без необходимости разбивать весь URL-адрес и не беспокоиться о якоре.
Вы, вероятно, также захотите позвонить decodeURIComponent
на каждом значении удалить любую URL-кодировку.