将URL分解为其组件

时间:2011-07-03 01:46:18

标签: javascript url url-parsing

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

我需要这样做才能获得一个查询参数,它本身就是一个URL,因此用原始的URL字符串编码。

我觉得应该有一个简单的方法在Javascript中执行此操作。也许看起来像这样:

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

4 个答案:

答案 0 :(得分:15)

parseUri功能可以完成您需要的一切

修改 或者,您可以get the DOM to do the hard work为您访问,并为URL的不同部分访问新创建的a对象的属性。

答案 1 :(得分:3)

<script type="text/javascript" language="javascript">
newURL = window.location.protocol + "//" + window.location.host + "/" + window.location.pathname;
</script>

Hope this will help..

答案 2 :(得分:2)

在javascript中你可以通过对params使用split()并使用协议和域的位置对象来实现这一点 - 就像Carl建议的那样

您也可以使用parseUri作为Tak建议

还有一个jQuery插件,如果您已在项目中使用jQuery,则可以更轻松地进行解析:https://github.com/allmarkedup/jQuery-URL-Parser#readme

示例:

$.url('http://allmarkedup.com?sky=blue&grass=green').param('sky'); // returns 'blue'

答案 3 :(得分:1)

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

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

然后,您可以根据&amp; s分拆查询,然后再分析=以获取您需要的任何参数。

很抱歉,如果这不是一个非常有用的技术方法:P

编辑: 刚刚编写了一个快速的小JavaScript对象来为您获取URL查询参数(有点像)。只用铬合金测试过,但从理论上说它应该可以工作:)

//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'));