我想从URL中获取查询字符串的所有参数值。
例如:www.xyz.com?author=bloggingdeveloper&a1=hello
我想使用JavaScript获取author
和a1
参数的值。
我想从URL中获取查询字符串的所有参数值。
例如:www.xyz.com?author=bloggingdeveloper&a1=hello
我想使用JavaScript获取author
和a1
参数的值。
最简单的方法是:
const search = /*your search query ex:-?author=bloggingdeveloper&a1=hello*/
const params = new URLSearchParams(search);
let paramObj = {};
for(var value of params.keys()) {
paramObj[value] = params.get(value);
}
如果你控制台输出paramObj,你会得到以下结果:
{
author: bloggingdeveloper,
a1: hello
}
简单!!
参考:- https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/keys
如果你正在和优秀的开发者打交道,我认为这并不过于复杂。将param.keys()迭代器转换为数组,这样你就可以使用reduce函数。
const params = new URLSearchParams(window.location.search);
const paramsObj = Array.from(params.keys()).reduce(
(acc, val) => ({ ...acc, [val]: params.get(val) }),
{}
);
{
a: any,
b: any,
c: any,
...etc
}
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;
}
var author = getUrlVars()["author"];
var a1 = getUrlVars()["a1"];
=
。 - ThiefMasterfunction parseQuerystring(){
var foo = window.location.href.split('?')[1].split('#')[0].split('&');
var dict = {};
var elem = [];
for (var i = foo.length - 1; i >= 0; i--) {
elem = foo[i].split('=');
dict[elem[0]] = elem[1];
};
return dict;
};
从您的查询字符串返回JS对象的函数。
//www.xyz.com?author=bloggingdeveloper&a1=hello
>parseQuerystring()
{
author: bloggingdeveloper,
a1: hello
}
试试这个:
function urlParameter() {
var url = window.location.href,
retObject = {},
parameters;
if (url.indexOf('?') === -1) {
return null;
}
url = url.split('?')[1];
parameters = url.split('&');
for (var i = 0; i < parameters.length; i++) {
retObject[parameters[i].split('=')[0]] = parameters[i].split('=')[1];
}
return retObject;
}
输出JSON对象:
{
author : 'bloggingdeveloper',
a1 : 'hello'
}
var author = urlParameter().author;
alert(author);
我发现这个问题并开始使用由TimT建议的答案,但发现有些情况下我的URL并没有查询字符串。TimT的函数将简单地返回URL,但我发现最好要么从查询字符串返回变量数组,要么只是返回false以进行简单的检查。
我进一步改用window.location.search,因为查询字符串已经提供给我们,无需分离它。
function getUrlVars() {
var vars = [], hash;
var query_string = window.location.search;
if (query_string) {
var hashes = query_string.slice(1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars[hash[0]] = hash[1];
}
return vars;
} else {
return false;
}
}
decodeURIComponent(hash[1]);
。 - Toskan var search = function() {
var p = window.location.search.substr(1).split(/\&/), l = p.length, kv, r = {};
while (l--) {
kv = p[l].split(/\=/);
r[kv[0]] = kv[1] || true; //if no =value just set it as true
}
return r;
}();
这个函数存储URL参数,因此非常高效(尽管它使用了全局变量 :-( ):
var urlParams = {};
(function () {
var e,
a = /\+/g, // Regex for replacing addition symbol with a space
r = /([^&=]+)=?([^&]*)/g,
d = function (s) {
return decodeURIComponent(s.replace(a, " "));
},
q = window.location.search.substring(1);
while (e = r.exec(q))
urlParams[d(e[1])] = d(e[2]);
})();
在URL上设置一个标识,例如url.com?id=9
,然后将其作为参数发送以调用函数并使用{{link1:URLSearchParams}}。
使用它
var get_vars = window.location.search;
var patt1 = /author\=(.+)\&/;
alert(get_vars.match(patt1)[1]);
上述代码的作用如下:
仅将域名中的查询字符串加载到get_vars变量中,
然后将一个正则表达式模式分配给patt1,该模式可以匹配作者变量及其值
最后弹出匹配的用户名。