一尘不染

如何使用JavaScript从当前URL获取查询字符串?

javascript

我有这样的网址:

http://localhost/PMApp/temp.htm?ProjectID=462

我需要做的是在?符号(查询字符串)后获取详细信息-即ProjectID=462。如何使用JavaScript来获得?

到目前为止,我所做的是:

var url = window.location.toString();
url.match(?);

我不知道下一步该怎么做。


阅读 326

收藏
2020-05-01

共1个答案

一尘不染

看一看的MDN文章有关window.location

QueryString在中可用window.location.search

同样适用于旧版浏览器的解决方案

MDN提供了一个如何获取QueryString中可用的单个键的值的示例在以上引用的文章中不再提供 。像这样:

function getQueryStringValue (key) {  
  return decodeURIComponent(window.location.search.replace(new RegExp("^(?:.*[&\\?]" + encodeURIComponent(key).replace(/[\.\+\*]/g, "\\$&") + "(?:\\=([^&]*))?)?.*$", "i"), "$1"));  
}

// Would write the value of the QueryString-variable called name to the console  
console.log(getQueryStringValue("name"));

在现代浏览器中

在现代浏览器中,您具有searchParamsURL接口的属性,该属性返回URLSearchParams对象。返回的对象有许多方便的方法,包括get方法。因此,与上述示例等效:

let params = (new URL(document.location)).searchParams;
let name = params.get("name");

该URLSearchParams接口也可以用于在查询字符串格式解析字符串,并把它们变成一个方便URLSearchParams对象。

let paramsString = "name=foo&age=1337"
let searchParams = new URLSearchParams(paramsString);

searchParams.has("name") === true; // true
searchParams.get("age") === "1337"; // true

请注意,该界面上对浏览器的支持仍然受到限制,因此,如果您需要支持旧版浏览器,请坚持第一个示例或使用polyfill

2020-05-01