有什么办法,如何阅读url params?
www.example.com/detail?id=12
www.example.com/detail/12
返回12 ...
我不知道参数是什么。我想全部归还。
答案 0 :(得分:3)
您可以使用window.location.href
获取带参数的网址。
要访问第二个示例中的id参数(www.example.com/detail/12)
var url = window.location.href;
return url.substring(url.lastIndexOf('/')+1);
如果您不需要它在Internet Explorer中工作,您还可以实现URLSearchParams,它允许您定义URL对象并直接从中检索params:
var paramsString = "q=URLUtils.searchParams&topic=api";
var searchParams = new URLSearchParams(paramsString);
//Iterate the search parameters.
for (let p of searchParams) {
console.log(p);
}
searchParams.has("topic") === true; // true
searchParams.get("topic") === "api"; // true
searchParams.getAll("topic"); // ["api"]
searchParams.get("foo") === null; // true
searchParams.append("topic", "webdev");
searchParams.toString(); // "q=URLUtils.searchParams&topic=api&topic=webdev"
searchParams.set("topic", "More webdev");
searchParams.toString(); // "q=URLUtils.searchParams&topic=More+webdev"
searchParams.delete("topic");
searchParams.toString(); // "q=URLUtils.searchParams"
答案 1 :(得分:1)
您可以使用Web API并访问window.location。
答案 2 :(得分:1)
var url_string = "http://www.example.com/detail?id=12";//www.example.com/detail/12";
var url = new URL(url_string);
var id = url.searchParams.get("id");
alert(id);
或试试这个:
function getParam( name, url ) {
if (!url) url = location.href;
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( url );
return results == null ? null : results[1];
}
alert(getParam('id', 'http://www.example.com/detail?id=12'))
答案 3 :(得分:1)
1.使用location.href
获取所有网址。
2.Find ?
char并拆分域和参数。
3.对于每个拆分=
字符,您将获得所有参数值。
var url = location.href;
if(url.indexOf('?')!=-1)
{
var ary = url.split('?')[1].split('&');
for(i=0;i<=ary.length-1;i++)
{
//val is parameter
var val = ary[i].split('=')[1];
//alret(val);
}
}
&#13;
答案 4 :(得分:1)
你可以抓住GET参数字符串并像这样解析它,首先将它变成一个数组,然后从该数组中构造一个对象,让你可以访问这些项:
const GETstring = window.location.search.subst(1);
let GETarray = GETstring.split("=");
let GETobject = {};
for(i=0;i<GETarray.length;i++){
if(i%2 === 0)}{
GETobject[GETarray[i]] = GETobject[i+1];
}
}
console.log(GETobject.id) // should print 12;
修改强>
Daniel的回答显示,URLsearchParams为您完成此操作,因此我认为这是更好的方法。当我写下答案时,我不知道这个功能。
答案 5 :(得分:1)
有几种方法可以做这样的事情。如果您正在使用框架或任何库,他们可能会提供更优雅的方式,但手动:
log = (...x) => console.log(...x);
const url_2 = "www.example.com/detail/12";
const url_1 = "www.example.com/detail?id=12&thing=blue&sky=red";
const splits2 = url_2.split("/");
log(splits2); // [ "www.example.com", "detail", "12"]
log(splits2[splits2.length-1]); // 12
const splitbyquestionmark = url_1.split("?");
log("splitbyquestionmark", splitbyquestionmark); // ["www.example.com/detail", "id=12&thing=blue&sky=red"]
const parameters = splitbyquestionmark.splice(splitbyquestionmark.length-1, 1); //["id=12&thing=blue&sky=red"]
const paramsAsString = parameters[0]; // id=12&thing=blue&sky=red
const finalParams = paramsAsString.split("&");
log(finalParams) //["id=12", "thing=blue", "sky=red"]