【问题标题】:Fetch query params in a SET in Javascript [duplicate]在Javascript中获取SET中的查询参数[重复]
【发布时间】:2013-01-11 18:20:40
【问题描述】:

可能重复:
How can I get query string values?
Convert URL parameters to a javascript object

在我的应用程序中,有一个页面我需要(从浏览器)检索页面 url,然后从中提取所有查询参数。

有没有快速的方法来做到这一点?我宁愿不使用 jQuery 插件,因为它不容易理解并且使应用程序依赖于插件。

我知道,我要同时问 2 个问题,但有没有办法将它们存储在 Set 中,以便可以作为键值对列表访问?

【问题讨论】:

标签: javascript jquery query-parameters


【解决方案1】:

正如另一篇文章中的第二个答案所引用的 - https://stackoverflow.com/a/2880929/1236019

var urlParams = {};
(function () {
    var match,
        pl     = /\+/g,  // Regex for replacing addition symbol with a space
        search = /([^&=]+)=?([^&]*)/g,
        decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
        query  = window.location.search.substring(1);

    while (match = search.exec(query))
       urlParams[decode(match[1])] = decode(match[2]);
})();

示例查询字符串:

   ?i=main&mode=front&sid=de8d49b78a85a322c4155015fdce22c4&enc=+Hello%20&empty

结果:

urlParams = {
    enc: " Hello ",
    i: "main",
    mode: "front",
    sid: "de8d49b78a85a322c4155015fdce22c4",
    empty: ""
}

【讨论】:

    【解决方案2】:

    还有一个非常不错的 jQuery 插件,叫做 purl/jQuery-URL-Parser:https://github.com/allmarkedup/jQuery-URL-Parser

    有了它,你可以这样做:

    var url = "http://localhost:3000?i=main&mode=front&sid=de8d49b78a85a322c4155015fdce22c4&enc=+Hello%20&empty"
    jQuery.url(url).param()
    
    // ==>
    
    urlParams = {
      enc: " Hello ",
      i: "main",
      mode: "front",
      sid: "de8d49b78a85a322c4155015fdce22c4",
      empty: ""
    }
    

    如果只是调用$.url(),它将使用当前的url。

    【讨论】:

      猜你喜欢
      • 2020-06-26
      • 2023-03-03
      • 2013-03-29
      • 2015-10-07
      • 1970-01-01
      • 2023-03-18
      • 2011-02-22
      • 2010-11-02
      相关资源
      最近更新 更多