如何从JavaScript中获取当前URL的查询string?

我有这样的URL:

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

我需要做的是获得后的细节? 标志(查询string) – 这是ProjectID=462 。 我怎样才能使用JavaScript?

我迄今所做的是这样的:

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

我不知道接下来要做什么。

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

QueryString在window.location.search可用。

也可以在传统浏览器中使用的解决scheme

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")); 

在现代浏览器中

在现代浏览器中,您有URL接口的searchParams属性,它返回一个URLSearchParams对象。 返回的对象有许多方便的方法,包括一个get方法。 所以上面的例子相当于:

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

URLSearchParams接口也可用于以查询string格式parsingstring,并将其转换为便利的URLSearchParams对象。

 let paramsString = "name=foo&age=1337" let searchParams = new URLSearchParams(paramsString); searchParams.has("name") === true; // true searchParams.get("age") === "1337"; // true 

请注意,浏览器支持在这个界面上仍然是有限的,所以如果你需要支持传统的浏览器,请坚持第一个例子。

使用window.location.search获取一切后? 包括?

例:

 var url = window.location.search; url = url.replace("?", ''); // remove the ? alert(url); //alerts ProjectID=462 is your case 

这将添加一个全局函数来访问queryStringvariables作为映射。

 // ------------------------------------------------------------------------------------- // Add function for 'window.location.query( [queryString] )' which returns an object // of querystring keys and their values. An optional string parameter can be used as // an alternative to 'window.location.search'. // ------------------------------------------------------------------------------------- // Add function for 'window.location.query.makeString( object, [addQuestionMark] )' // which returns a queryString from an object. An optional boolean parameter can be // used to toggle a leading question mark. // ------------------------------------------------------------------------------------- if (!window.location.query) { window.location.query = function (source) { var map = {}; source = source || this.search; if ("" != source) { var groups = source, i; if (groups.indexOf("?") == 0) { groups = groups.substr(1); } groups = groups.split("&"); for (i in groups) { source = groups[i].split("=", // For: xxx=, Prevents: [xxx, ""], Forces: [xxx] (groups[i].slice(-1) !== "=") + 1 ); // Key i = decodeURIComponent(source[0]); // Value source = source[1]; source = typeof source === "undefined" ? source : decodeURIComponent(source); // Save Duplicate Key if (i in map) { if (Object.prototype.toString.call(map[i]) !== "[object Array]") { map[i] = [map[i]]; } map[i].push(source); } // Save New Key else { map[i] = source; } } } return map; } window.location.query.makeString = function (source, addQuestionMark) { var str = "", i, ii, key; if (typeof source == "boolean") { addQuestionMark = source; source = undefined; } if (source == undefined) { str = window.location.search; } else { for (i in source) { key = "&" + encodeURIComponent(i); if (Object.prototype.toString.call(source[i]) !== "[object Array]") { str += key + addUndefindedValue(source[i]); } else { for (ii = 0; ii < source[i].length; ii++) { str += key + addUndefindedValue(source[i][ii]); } } } } return (addQuestionMark === false ? "" : "?") + str.substr(1); } function addUndefindedValue(source) { return typeof source === "undefined" ? "" : "=" + encodeURIComponent(source); } } 

请享用。

你可以使用这个函数来分隔string?id =

  function myfunction(myvar){ var urls = myvar; var myurls = urls.split("?id="); var mylasturls = myurls[1]; var mynexturls = mylasturls.split("&"); var url = mynexturls[0]; alert(url) } myfunction(window.top.location.href); myfunction("http://www.myname.com/index.html?id=dance&emp;cid=in_social_facebook-hhp-food-moonlight-influencer_s7_20160623"); 

这里是小提琴

您可以使用window.location对象的search属性来获取URL的查询部分。 请注意,它包含问号(?),以防万一您打算parsing它。

你应该看看URL API,它有助手方法来实现它作为URLSearchParams : https : //developer.mozilla.org/en-US/docs/Web/API/URLSearchParams

目前所有的浏览器都不支持这个function,所以不要忘记填充它(使用https://qa.polyfill.io/提供的Polyfill)。;

  var queryObj = {}; if(url.split("?").length>0){ var queryString = url.split("?")[1]; } 

现在你在查询string中有查询部分

先取代将删除所有的空格,其次将replace所有的'&'部分,最后第三个replace将把“:”代替'='的标志。

 queryObj = JSON.parse('{"' + queryString.replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g,'":"') + '"}') 

所以说,你有一个像ABC = 123&efg = 456的查询。 现在在parsing之前,你的查询被转换成{“abc”:“123”,“efg”:“456”}。 现在,当你parsing这个,它会给你在json对象的查询。

 window.location.href.slice(window.location.href.indexOf('?') + 1)