这个问题在这里已有答案:
- 如何在JavaScript中获取查询字符串值? 73个答案
2820
2018-04-07 17:53
起源
答案 stackoverflow.com/a/3855394/295783 你发布的链接也会在你的情况下工作,除非你提到数组和使用[]的建议重复参数 - mplungjan
需要明确的是:URL没有概念 阵列。您拥有的只是具有相同名称的多个参数。该 [] 通常用于PHP服务器,然后由这些参数创建数组。其他语言(例如Python)可以处理具有相同名称的多个参数(并且没有 []) 正好。 - Felix Kling
从您链接的问题,您可能会发现此答案有用: stackoverflow.com/a/9362596/218196。 - Felix Kling
好的,谢谢你们。道歉我认为这是一个阵列。 'name'是一个复选框表单,因此会使用相同的名称发送多个值。 - iltdev
答案:
你去: http://jsfiddle.net/mm6Bt/1/
function getURLParam(key,target){
var values = [];
if (!target) target = location.href;
key = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var pattern = key + '=([^&#]+)';
var o_reg = new RegExp(pattern,'ig');
while (true){
var matches = o_reg.exec(target);
if (matches && matches[1]){
values.push(matches[1]);
} else {
break;
}
}
if (!values.length){
return null;
} else {
return values.length == 1 ? values[0] : values;
}
}
var str = 'http://www.example.com?name[]=hello&name[]=world&var1=stam';
console.log(getURLParam('name[]',str));
console.log(getURLParam('var1',str));
12
2018-04-07 18:17
非常感谢,阿迪迪。那太完美了! :) - iltdev
非常欢迎你^^ - Adidi
经过大量的挣扎,我发现如果它是一个数组我们需要附加[]来命名!现在看起来很明显,但不知怎的,我浪费了一个小时来注意它。 - Atul Vaibhav
另外,我用第4行代替:“target = decodeURIComponent(location.search);”让这个功能工作。 - Atul Vaibhav
有没有办法将整个查询字符串作为对象返回而不是传递params? - shorif2000