在Javascript中的SET中获取查询参数

时间:2013-01-28 12:00:54

标签: javascript jquery query-parameters

  

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

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

有快速的方法吗?我不想使用jQuery插件,因为它不容易理解并使应用程序依赖于插件。

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

2 个答案:

答案 0 :(得分:0)

引自另一篇文章中的第二个答案 - 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: ""
}

答案 1 :(得分:0)

还有一个非常好的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(),则会获取当前网址。