49

我想知道location.search.substring(1)实际上是做什么的。我在某个网站上看到了这段代码。我尝试使用 打印alert,但这没有给出任何结果。它应该提醒位置href吗?

alert(location.search.substring(1))
4

7 回答 7

52
http://example.com/index.php?foo=bar

location.search
> ?foo=bar
location.search.substring(1)
> foo=bar

因此该代码将返回不带问号的整个查询参数。

于 2013-01-18T08:38:58.443 回答
21

location.search 属性包含 URI 的查询字符串(包括 ?),如果有的话。

例子:

http://www.example.org/index.php?param=arg
location.search is ?param=arg

所以你的代码剪掉了领先?并返回param=arg

于 2013-01-18T08:39:35.883 回答
14

搜索属性返回 URL 的查询部分,包括问号 (?)。

这意味着,location.search.substring(1)应该返回不带问号的数据。

// http://www.example.com/index.html
console.log(location.search.substring(1)); // no query string, so displays nothing

// http://www.example.com/index.html?property=value
console.log(location.search.substring(1)); // should display "property=value"

“查询部分”是查询字符串:

http://www.example.com/?property=value&property2=value
                       |        query string         |
于 2013-01-18T08:38:32.420 回答
7

例如,如果您有以下网址

http://www.example.org/index.htm?Browser=Netscape

然后window.location.search?Browser=Netscape作为字符串返回

于 2013-01-18T08:41:15.807 回答
6

location.search 返回一个包含初始问号的查询字符串。substr 方法是从返回的查询字符串中删除初始问号。

你在 alert() 中没有得到任何结果的原因是你试图在一个没有任何结果的网站上读取查询字符串。

以下是您的测试方式:

  1. 转到此网址
  2. 在浏览器上打开控制台
  3. 粘贴下面共享的代码片段,然后按 Enter

var container = {};
location.search.split('&').toString().substr(1).split(",").forEach(item => {
    container[item.split("=")[0]] = decodeURIComponent(item.split("=")[1]) ?  item.split("=")[1]: "No query strings available" ;
});
console.log(container);

老问题,但答案可能对本页的新访问者有所帮助。

于 2019-09-19T20:48:53.243 回答
1

它返回查询字符串,不带初始问号。如果页面上有查询字符串,您只会看到结果,例如http://www.example.com?parameter=value

于 2013-01-18T08:39:06.903 回答
1

现在是 2018 年,这就是你在 2018 年的做法。

示例网址:

http://localhost:10/mapserver1/viewer/?config=viewer_simple1&url=https://maps2.dcgis.dc.gov/dcgis/rest/services/Zoning/MapServer&zoom=17&lat=38.917292&long=-77.036420

我提取每个查询参数的工作代码:

        var ___zoom;
        var ___lat;
        var ___long;
        var ___basemap;

        var ___type;
        var ___url;
        var ___title;
        var ___opacity;



        if ( location.search.match(/zoom=([^&]*)/i) )
        {
             ___zoom = location.search.match(/zoom=([^&]*)/i)[1];
         }

        if ( location.search.match(/lat=([^&]*)/i) )
        {
           ___lat = location.search.match(/lat=([^&]*)/i)[1];
        }

        if (location.search.match(/long=([^&]*)/i))
        {
            ___long = location.search.match(/long=([^&]*)/i)[1];
        }

        if (location.search.match(/basemap=([^&]*)/i))
        {
            ___basemap = location.search.match(/basemap=([^&]*)/i)[1];
        }

        if (location.search.match(/type=([^&]*)/i))
        {
            ___type = location.search.match(/type=([^&]*)/i)[1];
        }

       if (location.search.match(/url=([^&]*)/i))
        {
            ___url = location.search.match(/url=([^&]*)/i)[1];
        }


        if (location.search.match(/title=([^&]*)/i))
        {
            ___title = location.search.match(/title=([^&]*)/i)[1];
        }

        if (location.search.match(/opacity=([^&]*)/i))
        {
            ___opacity = location.search.match(/opacity=([^&]*)/i)[1];
        }


        //console.log(location.search.match(/zoom=([^&]*)/i)[0]);   //    'zoom=17'
        //console.log(location.search.match(/zoom=([^&]*)/i)[1]);   //     '17'
        console.log(___zoom); 
        console.log(___lat); 
        console.log(___long); 
        console.log(___basemap); 

        console.log(___type); 
        console.log(___url); 
        console.log(___title); 
        console.log(___opacity); 
于 2018-09-11T22:46:17.660 回答