关于url:如何在javascript中获取查询字符串值?

How can I get query string values in JavaScript?

是否有无插件的方式通过jquery(或不通过jquery)检索查询字符串值?

如果是这样,怎么办?如果没有,是否有插件可以这样做?


更新日期:2018年9月

您可以使用URLSearchParams,它很简单,并且具有良好的浏览器支持。

1
2
const urlParams = new URLSearchParams(window.location.search);
const myParam = urlParams.get('myParam');

原件

为此,您不需要jquery。您可以使用一些纯javascript:

1
2
3
4
5
6
7
8
9
function getParameterByName(name, url) {
    if (!url) 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, ' '));
}

用途:

1
2
3
4
5
// 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查询键的权威位置。注意:此功能区分大小写。如果您喜欢不区分大小写的参数名,请将"i"修饰符添加到regexp

这是基于新的URLSearchParams规范的更新,以更简洁地实现相同的结果。请参阅下面题为"urlsearchparams"的答案。