我正在尝试从浏览器中获取网址参数。
浏览器有这样的网址
http://localhost/red/prepareslide.php?p=trng&s=1
但是我希望得到这样的参数,我想在(问号)之后得到所有参数“?”
输出应该像这样p=trng&s=1
我怎么能这样做?
这是我的代码:
<!DOCTYPE html>
<html>
</head>
<script>
function call(){
URL = window.location.toString();
var query = URL.match(/\?/);
alert(query);
var queryList = query.split("?");
for (var i=0; i<queryList.length; i++)
{
var element = queryList[i].split("=");
var ex=document.write(element[0] + " = " + unescape(element[1]) + "\r\n");
alert(ex);
}
}
</script>
</head>
<body>
<a href="#" onclick="call();">click</a>
</body>
</html>
答案 0 :(得分:2)
编辑:some1通知我的代码段包含一个漏洞。他是对的。如果网址中没有问号,则结果将为完整网址。
由于你的目标是获得问号后的字符,这应该可以胜任,
// obtain browser url
var currUrl = document.URL;
// split string to obtain substring
var index; var str;
if((index = currUrl.indexOf("?")) > 0) str = currUrl.substring(index + 1);
但这确实可以更快。如下面评论,
// obtain browser url
var currUrl = document.URL;
// replace the string that only after ? returns as results
var str = currUrl.replace(/^[^?]*\?/, '');
// check result
if(str != '') {
// do your task here with the result
}
如果您想给予信用,如果这是一个有用的回复,请将其交给ElLocoCocoLoco(他的评论)和/或Ruslan Bes替换技巧。 (虽然也是正确的。)
答案 1 :(得分:1)
你可以;
document.location.search.replace(/\??([^&=]+)=([^&=]*)/g, function(p, k, v) {
document.write(k + " = " + decodeURIComponent(v) + "</ br>");
})
答案 2 :(得分:0)
如果您只需要params部分,可以尝试如下:
var urlParams = window.location.href.split('?')[1] ;
答案 3 :(得分:0)
这是正确而完整的方法:
var url = window.location.href;
var endChar = url.indexOf('#');
if(endChar==-1)
{
endChar = url.length;
}
var queryChar = url.indexOf('?');
var queryPart="";
if(queryChar!=-1)
{
queryPart = url.slice(url.indexOf('?') + 1,endChar);
}
答案 4 :(得分:0)
您的RE / \?/ 只会返回?,您应该使用 / \?\ S + / ,这会导致?p = trng&amp; s = 1 ,然后相应地使用split(),#还是处理不需要的符号?在结果中。