Javascript 使用Jquery或JS获取具有相同名称的多个参数时的URL查询字符串参数
我有一个由多个过滤器组成的URL,这些过滤器被命名并具有相应的搜索条件,我无法更改这些URL的构造方式 我知道如何在一个场景中获取查询字符串参数,在这个场景中,我只是尝试获取一个参数的值,但是我似乎不知道如何将它们适当地关联在一起。例如,以下是url:Javascript 使用Jquery或JS获取具有相同名称的多个参数时的URL查询字符串参数,javascript,jquery,query-string,Javascript,Jquery,Query String,我有一个由多个过滤器组成的URL,这些过滤器被命名并具有相应的搜索条件,我无法更改这些URL的构造方式 我知道如何在一个场景中获取查询字符串参数,在这个场景中,我只是尝试获取一个参数的值,但是我似乎不知道如何将它们适当地关联在一起。例如,以下是url: /AllItems.aspx?FilterName=FilterA&FilterMultiValue=*FilterASearchValue*&FilterName=FilterB&FilterMultiValue=*Fi
/AllItems.aspx?FilterName=FilterA&FilterMultiValue=*FilterASearchValue*&FilterName=FilterB&FilterMultiValue=*FilterBSearchValue*"
我希望从此url获取值,以便将筛选器A与FilterA搜索值关联,并将筛选器B与FilterB搜索值关联{
function getParamsFromUrl() {
var query = location.search.substr(1);
var params = query.split("&");
var result = {};
for(var i=0; i<params.length; i++) {
var item = params[i].split("=");
result[item[0]] = item[1];
}
return result;
}
var query=location.search.substr(1);
var params=query.split(&);
var result={};
对于(var i=0;i,您可以使用reduce来实现这一点:
var u='/AllItems.aspx?FilterName=FilterA&FilterMultiValue=*FilterASearchValue*&FilterName=FilterB&FilterMultiValue=*FilterBSearchValue*'
u.split(/[?&]/).reduce(function(a,b,c){
var p=b.split("="), k=p[0], v=decodeURIComponent(p[1]);
if(!p[1])return a;
a[k]=a[k]||[];
a[k].push(v);
return a;
}, {})
它返回一个参数数组而不是字符串,允许重复相同名称的参数:
{
"FilterName": [
"FilterA",
"FilterB"
],
"FilterMultiValue": [
"*FilterASearchValue*",
"*FilterBSearchValue*"
]
}
另一种适用于现代浏览器的解决方案:
let params = (new URL(document.location)).searchParams;
let values = params.getAll("param-name");
let params = (new URL(document.location)).searchParams;
let values = params.getAll("param-name");