我想从URL获取查询字符串的所有参数的值。
示例:www.xyz.com?author=bloggingdeveloper&a1=hello
我希望使用JavaScript获取author
和a1
参数的值。
答案 0 :(得分:4)
最简单的方法是: -
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
答案 1 :(得分:3)
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"];
答案 2 :(得分:2)
我发现了这个问题并开始使用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;
}
}
答案 3 :(得分:0)
使用
var get_vars = window.location.search;
var patt1 = /author\=(.+)\&/;
alert(get_vars.match(patt1)[1]);
上面的代码就像那样
仅将来自域的查询字符串加载到get_vars变量中
然后将正则表达式模式分配到patt1中,该模式可以匹配作者变量及其值; s值
最后提醒匹配的用户名
答案 4 :(得分:0)
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;
}();
答案 5 :(得分:0)
您可以使用以下内容:
function 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-object。
//www.xyz.com?author=bloggingdeveloper&a1=hello
>parseQuerystring()
{
author: bloggingdeveloper,
a1: hello
}
答案 6 :(得分:0)
试试这个:
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);
答案 7 :(得分:0)
这会存储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]);
})();
答案 8 :(得分:0)
如果您要与优秀的开发人员打交道,我认为这并不是太复杂。将迭代器从param.keys()转换为数组,以便可以使用reduce。
const params = new URLSearchParams(window.location.search);
const paramsObj = Array.from(params.keys()).reduce(
(acc, val) => ({ ...acc, [val]: params.get(val) }),
{}
);
答案 9 :(得分:0)
在类似Sign In | Sign Out
1/1/18 9:00 AM | 1/1/18 10:30 AM
1/1/18 10:16 AM | 1/1/18 11:46 AM
1/1/18 10:18 AM | 1/1/18 11:48 AM
1/1/18 10:29 AM | 1/1/18 11:59 AM
1/1/18 10:30 AM | 1/1/18 12:00 PM
1/1/18 10:33 AM | 1/1/18 12:03 PM
1/1/18 11:27 AM | 1/1/18 12:57 PM
1/1/18 11:36 AM | 1/1/18 1:06 PM
1/1/18 11:37 AM | 1/1/18 1:07 PM
1/1/18 11:51 AM | 1/1/18 1:21 PM
1/1/18 11:52 AM | 1/1/18 1:22 PM
的URL上设置标识,然后将其作为参数发送以调用该函数并使用URLSearchParams。