在我的应用程序中,有一个页面我需要(从浏览器)检索页面 url,然后从中提取所有查询参数。
有没有快速的方法来做到这一点?我宁愿不使用 jQuery 插件,因为它不容易理解并使应用程序依赖于插件。
我知道,我问了 2 个问题,但有没有办法将它们存储在 Set 中,以便可以作为键值对列表访问?
在我的应用程序中,有一个页面我需要(从浏览器)检索页面 url,然后从中提取所有查询参数。
有没有快速的方法来做到这一点?我宁愿不使用 jQuery 插件,因为它不容易理解并使应用程序依赖于插件。
我知道,我问了 2 个问题,但有没有办法将它们存储在 Set 中,以便可以作为键值对列表访问?
正如另一篇文章中的第二个答案所引用的那样 - 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: ""
}
还有一个非常不错的 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。