我使用的是javascript,我想获取一个URL字符串,并将其分解为其组件,如主机、路径和查询参数。
我需要这样做才能获得其中一个查询参数,它本身就是一个URL,因此被编码在原始URL字符串中。
我觉得应该有一种简单的方法在Javascript中实现这一点。也许是这样的:
var what_I_Want = url("http://www.domain.com?queryArg1=somequeryargument").getQueryArgumentValue("queryArg1");
parseUri函数将完成所需的一切
编辑或者,您可以让DOM为您做艰苦的工作,并访问URL不同部分的新创建的a
对象的属性。
<script type="text/javascript" language="javascript">
newURL = window.location.protocol + "//" + window.location.host + "/" + window.location.pathname;
</script>
Hope this will help..
在javascript中,您可以通过对params使用split((并对协议和域使用location对象来实现这一点,就像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'
可能不是最好的方法,但在JavaScript中获取查询字符串的一个简单方法是使用以下内容:
a = "http://www.domain.com?queryArg1=somequeryargument";
query = a.substring(a.indexOf('?')+1);
然后,您可以根据&'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'));