13

我正在使用 javascript,并希望获取我拥有的 URL 字符串并将其分解为其组件,例如主机、路径和查询参数。

我需要这样做以获取其中一个查询参数,它本身就是一个 URL,因此被编码在原始 URL 字符串中。

我觉得应该有一种简单的方法可以在 Javascript 中做到这一点。也许看起来像这样:

var what_I_Want = url("http://www.domain.com?queryArg1=somequeryargument").getQueryArgumentValue("queryArg1");
4

4 回答 4

17

parseUri函数将完成您需要的一切

编辑 或者,您可以让 DOM 为您完成繁重的工作a,并访问URL 不同部分的新创建对象的属性。

于 2011-07-03T01:51:37.230 回答
3
<script type="text/javascript" language="javascript">
newURL = window.location.protocol + "//" + window.location.host + "/" + window.location.pathname;
</script>

Hope this will help..
于 2014-09-01T11:03:22.953 回答
2

在 javascript 中,您可以通过使用 split() 作为参数并使用 location 对象作为协议和域来做到这一点——就像 Carl 建议的那样

您也可以按照 Tak 的建议使用 parseUri

如果您已经在项目中使用 jQuery,还有一个 jQuery 插件可以使解析更容易:https ://github.com/allmarkedup/jQuery-URL-Parser#readme

例子:

$.url('http://allmarkedup.com?sky=blue&grass=green').param('sky'); // returns 'blue'
于 2011-07-03T01:59:16.770 回答
1

可能不是最好的方法,但在 JavaScript 中获取查询字符串的一种简单方法是使用以下内容:

 a = "http://www.domain.com?queryArg1=somequeryargument";
 query = a.substring(a.indexOf('?')+1);

然后,您可以根据 & 和 = 再次拆分查询,以获得您需要的任何参数。

抱歉,如果这不是很有帮助,因为它有点低技术方法:P

编辑:刚刚在您的示例中编写了一个快速的小 JavaScript 对象来为您获取 URL 查询参数(有点像)。仅在 chrome 中对其进行了测试,但理论上它应该可以工作:)

//Quick and dirty query Getter object.
function urlQueryGetter(url){
    //array to store params
    var qParam = new Array();
    //function to get param
    this.getParam = function(x){
    return qParam[x];
    }

    //parse url 
    query = url.substring(url.indexOf('?')+1);
    query_items = query.split('&');
    for(i=0; i<query_items.length;i++){
        s = query_items[i].split('=');
        qParam[s[0]] = s[1];
    }

}

//Useage
var bla = new urlQueryGetter("http://www.domain.com?queryArg1=somequeryargument&test=cheese");
alert(bla.getParam('test'));
于 2011-07-03T01:58:12.400 回答