使用 location.search 定位参数的值
Posted
技术标签:
【中文标题】使用 location.search 定位参数的值【英文标题】:Get values of parameters from URL 【发布时间】:2015-01-04 08:31:09 【问题描述】:我正在开发一个工具,它采用 URL 中的值参数并用它们做一些事情。
我的问题是,我似乎无法使用 document.location 来显示我所追求的具体值,例如:
www.examplesite.com?yourname=gilgilad
我想使用 document.location.search 并将其放入一个 var 中,我需要该 var 的值为“gilgilad”。
这甚至可以使用 location.search 吗?
【问题讨论】:
【参考方案1】:location.search
将返回包括它在内的所有问号。所以有通用的js来获取第一个参数的值(即使url有更多的参数):
var desire = location.search.slice(1).split("&")[0].split("=")[1]
示例:让我们获取网址http://example.com?name=jon&country=us
location.search
将等于 ?name=jon&country=us
.slice(1)
跳过 ?
,返回字符串的其余部分。
.split("&")[0]
将其拆分为两个字符串(name=jon
和
country=us
) 并拿下第一个
.split("=")[1]
将 name=jon
拆分为 name
和 jon
并获取第二个。完成!
【讨论】:
这是一个很好的答案,尤其是考虑到搜索会抓取包括问号在内的 url 之后的所有内容这一事实。 @MatthewA.McFarland 等等。现在我真的不明白这个问题。他的意思是阅读还是设置location.search,你怎么看? nicael,我认为他说“放入 var”时是要设置 快速单行获取特定参数(此处为“referrer”):new Map(window.location.search.slice(1).split('&').map(q => q.split('='))).get('referrer')
【参考方案2】:
let url = new URL('www.examplesite.com?yourname=gilgilad');
let searchParams = new URLSearchParams(url.search);
console.log(searchParams.get('yourname'));
您也可以直接考虑window.location
或window.location.search
用户
let searchParams = new URLSearchParams(window.location.search);
console.log(searchParams.get('yourname'));
【讨论】:
【参考方案3】:拆分 location.search 查询参数并将它们转换为对象的更通用的解决方案:
var a = location.search.split("&");
var o = a.reduce(function(o, v)
var kv = v.split("=");
kv[0] = kv[0].replace("?", "");
o[kv[0]] = kv[1];
return o;
,
);
【讨论】:
【参考方案4】:使用 document.location.search 制作?yourname=gilgilad
:
window.location.search = 'yourname=gilgilad';
这里是 jsfiddle:http://jsfiddle.net/t81k3bgc/
确保使用控制台,然后使用[run]
。你会看见:
更多信息: https://developer.mozilla.org/en-US/docs/Web/API/Window.location#Example_.235.3A_Send_a_string_of_data_to_the_server_by_modifying_the_search_property.3A
【讨论】:
以上是关于使用 location.search 定位参数的值的主要内容,如果未能解决你的问题,请参考以下文章