如何使用js阅读所有url params?

时间:2018-02-04 09:58:10

标签: javascript

有什么办法,如何阅读url params?

www.example.com/detail?id=12
www.example.com/detail/12

返回12 ...

我不知道参数是什么。我想全部归还。

6 个答案:

答案 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:

来自https://developer.mozilla.org

的示例
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。

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;
&#13;
&#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)

有几种方法可以做这样的事情。如果您正在使用框架或任何库,他们可能会提供更优雅的方式,但手动:

  1. 正则表达式如果每个人都熟悉它,我可能会推荐这种方法,这种方法可能会更加神秘,但性能更高。
  2. 将字符串视为数组。之后 ?索引,抓取由“/”和&amp;
  3. 删除的索引

        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"]