javascript - 如何在 JavaScript 中获取查询字符串值?

标签 javascript url plugins query-string

是否有一种无插件的方式来检索 query string通过 jQuery 获取值(或不通过 jQuery)?

如果是这样,怎么办?如果没有的话,有没有一个插件可以做到这一点?

最佳答案

使用URLSearchParams从查询字符串中获取参数。

例如:

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

更新:2022 年 1 月

使用Proxy()faster比使用Object.fromEntries()并得到更好的支持。

此方法附带一个警告,即您无法再迭代查询参数。

const params = new Proxy(new URLSearchParams(window.location.search), {
  get: (searchParams, prop) => searchParams.get(prop),
});
// Get the value of "some_key" in eg "https://example.com/?some_key=some_value"
let value = params.some_key; // "some_value"

更新:2021 年 6 月

对于需要所有查询参数的特定情况:

const urlSearchParams = new URLSearchParams(window.location.search);
const params = Object.fromEntries(urlSearchParams.entries());

更新: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 = 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

注意:如果您遇到 no-useless-escape eslint 错误,您可以替换 name = name.replace(/[\[\]]/g, '\\$&');name = name.replace(/[[\]]/g, '\\$&')

<小时/>

这是基于新 URLSearchParams specs 的更新更简洁地实现相同的结果。请参阅下面标题为“URLSearchParams ”的答案。

关于javascript - 如何在 JavaScript 中获取查询字符串值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57538756/

相关文章:

javascript - 使用 WebSocket 的 React Native 不起作用

javascript - 从 Javascript 函数调用 Html Helper 方法

Javascript 陌生赋值构造

php - 尝试截断 URI/URL 的文件部分

JavaScript 的 URL 绝对路径在一个页面上有效,但在另一个页面上创建 ajax 错误消息

java - Deorg.apache.xerces.parsers.XIncludeAwareParserConfiguration无法转换为org.apache.xerces.xni.parser.XMLParserConfiguration

javascript - JSTree,添加子节点不起作用

ruby-on-rails - 我是否需要对作为 POST 表单参数传递的字符串(例如 URL)进行编码

java - 如何用java编写自己的插件加载器?

ruby-on-rails - 创建一个简单的 Rails 3 文本助手 Gem