возможные дубликаты: как я могу получить значения строки запроса?
в
У меня есть следующий URL-адрес:
в
http://www.mysite.co.uk/?location=mylocation1
Мне нужно получить значение место
из URL в переменную, а затем использовать его в код jQuery:
var thequerystring = "getthequerystringhere"
$('html,body').animate({scrollTop: $("div#" + thequerystring).offset().top}, 500);
Кто-нибудь знает, как получить это значение с помощью JavaScript или jQuery?
От: http://jquery-howto.blogspot.com/2009/09/get-url-parameters-values-with-jquery.html
Это то, что вам нужно :)
Следующий код возвращает объект JavaScript, содержащий параметры URL:
// Read a page's GET URL variables and return them as an associative array.
function getUrlVars()
{
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
Например, если у вас есть URL-адрес:
http://www.example.com/?me=myValue&name2=SomeOtherValue
Этот код будет возвращать:
{
"me" : "myValue",
"name2" : "SomeOtherValue"
}
и вы можете сделать:
var me = getUrlVars()["me"];
var name2 = getUrlVars()["name2"];
Для получения всей строки запроса из текущего URL-адреса, начинающиеся с символа"?", вы можете использовать
location.search
https://developer.mozilla.org/en-US/docs/DOM/window.location
Пример:
Ланг-Яш // URL-адрес = https://example.com?a=a%20a&б=b123 консоль.журнал(расположение.поиска); // выводит на "?В=а%20а&б=b123" и
С точки зрения получения конкретных параметров строки запроса, хотя классов как URLSearchParams
и адрес
существуют, они не'т поддерживаются Internet Explorer на этот раз, и, вероятно, следует избегать. Вместо этого вы можете попробовать что-то вроде этого:
``Ланг-Яш
/**
возвращение {}; }
/**
Вы можете использовать выше вот так: ``Ланг-Яш // Использованием место.поиск пусть urlParams = getUrlParams(расположение.поиска); // предположим, расположение.поиск = и"?а=1&в=2Б2"и консоль.журнал(urlParams); // выводит { "А": 1, то "Б" и: "в 2в2 и" }
// Через строку URL константный URL-адрес = 'https://example.com?a=A%20A&Б=1'; urlParams = getUrlParams(URL-адрес); консоль.журнал(urlParams); // выводит { "А": "А А", то "в”: 1 }
// Чтобы проверить, существует ли параметр, просто делать: если (urlParams.метод hasOwnProperty('имяпараметра') { консоль.журнал(urlParams.имя_параметра); }
``
Простой способ сделать это в jQuery и прямо в JS, просто смотреть вашу консоль в Chrome или Firefox, чтобы увидеть выход...
var queries = {};
$.each(document.location.search.substr(1).split('&'),function(c,q){
var i = q.split('=');
queries[i[0].toString()] = i[1].toString();
});
console.log(queries);
Посмотрите на этом сайте StackOverflow ответ.
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
Вы можете использовать этот метод для анимации:
т. е.:
var thequerystring = getParameterByName("location");
$('html,body').animate({scrollTop: $("div#" + thequerystring).offset().top}, 500);
Мы делаем это так...
String.prototype.getValueByKey = function (k) {
var p = new RegExp('\\b' + k + '\\b', 'gi');
return this.search(p) != -1 ? decodeURIComponent(this.substr(this.search(p) + k.length + 1).substr(0, this.substr(this.search(p) + k.length + 1).search(/(&|;|$)/))) : "";
};