如何在发生后获取url参数

时间:2013-07-23 11:57:50

标签: javascript html html5

我正在尝试从浏览器中获取网址参数。

浏览器有这样的网址

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>

5 个答案:

答案 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(),#还是处理不需要的符号?在结果中。