更新:2018年9月
你可以使用简单且具有不错(但不完整)浏览器支持的URLSearchParams。
const urlParams = new URLSearchParams(window.location.search);
const myParam = urlParams.get('myParam');
原来的
为此,你不需要jQuery。你可以只使用一些纯JavaScript:
function getParameterByName(name, 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, ' '));
}
用法:
// query string: ?foo=lorem&bar=&baz
var foo = getParameterByName('foo'); // "lorem"
var bar = getParameterByName('bar'); // "" (present with empty value)
var baz = getParameterByName('baz'); // "" (present with no value)
var qux = getParameterByName('qux'); // null (absent)
注意:如果一个参数多次出现(?foo=lorem&foo=ipsum
),你将获得第一个值(lorem
)。对此没有标准,用法也有所不同,例如参见以下问题:重复的HTTP GET查询键的权威位置。
注意:该功能区分大小写。如果你希望使用不区分大小写的参数名称,请在RegExp中添加'i'修饰符
这是基于新的URLSearchParams规范的更新,目的是更简洁地达到相同的结果。请参阅下面标题为“ URLSearchParams ”的答案。
对于所有喜欢但以对象形式出现的新手,请使用
Object.fromEntries([...new URLSearchParams(location.search)])
仅供参考-区分大小写。当使用getParameterByName('Foo')而不是getParameterByName('foo')时,它将失败
@myjobistobehappy的答案应该是被接受的