This question's answers are a community effort。编辑现有答案以改善此职位。它目前不接受新的答案或互动。
有没有一种无插件的方法可以通过jQuery(或不通过jQuery)检索query string值?
如果是这样,怎么办?如果没有,是否有可以做到的插件?
原版的
为此,您不需要jQuery。您可以只使用一些纯JavaScript:
用法:
注意:如果参数多次出现(
注意:该功能区分大小写。如果您希望使用不区分大小写的参数名称,请使用add 'i' modifier to RegExp
这是基于新URLSearchParams specs的更新,目的是更简洁地达到相同的结果。请参阅下面标题为“ URLSearchParams”的答案。
有没有一种无插件的方法可以通过jQuery(或不通过jQuery)检索query string值?
如果是这样,怎么办?如果没有,是否有可以做到的插件?
最佳答案
更新:2018年9月
您可以使用简单且具有URLSearchParams的decent (but not complete) browser support。
const urlParams = new URLSearchParams(window.location.search);
const myParam = urlParams.get('myParam');
原版的
为此,您不需要jQuery。您可以只使用一些纯JavaScript:
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, ' '));
}
用法:
// 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
)。对此没有标准,用法也有所不同,例如参见以下问题:Authoritative position of duplicate HTTP GET query keys。注意:该功能区分大小写。如果您希望使用不区分大小写的参数名称,请使用add 'i' modifier to RegExp
这是基于新URLSearchParams specs的更新,目的是更简洁地达到相同的结果。请参阅下面标题为“ URLSearchParams”的答案。
07-24 13:15