如何从javascript中的url获取参数值?

时间:2012-03-15 11:20:51

标签: javascript url

  

可能重复:
  How can I get a specific parameter from location.search?

我有一个类似以下的网址。

http://localhost/xxx.php?tPath=&pid=37

我希望得到pid = 37但是它的名字是因为时间上的url就像上面一样,然后当页面刷新时,网址会变成如下所示。

http://localhost/xxx.php?tPath=&action=xxx&pid=37&value=13&fname=aaaa&fone=4321122

所以我想得到pid = 37。它可能是我将pid作为参数传递给它的函数,它返回它的值。

我将如何做到这一点?

4 个答案:

答案 0 :(得分:13)

查看this或按照以下解决方案:

function getParam( name )
{
 name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
 var regexS = "[\\?&]"+name+"=([^&#]*)";
 var regex = new RegExp( regexS );
 var results = regex.exec( window.location.href );
 if( results == null )
  return "";
else
 return results[1];
}

var frank_param = getParam( 'pid' );

答案 1 :(得分:1)

使用以下功能

function getParameterValue(name)
{
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null ) return "";
else return results[1];
}

答案 2 :(得分:1)

嗯,已经有三个答案,都使用正则表达式。但正则表达式真的是这项工作的错误工具。正如有人说的那样,有些人在遇到问题时会想:“我知道,我会用正则表达式!”现在他们有两个问题。以下是这些答案错误的部分原因:

  • 如果您要查找的“名称”中包含正则表达式字符,则需要对其进行转义,如果URL在路径部分使用&符号(并非符合RFC的情况下),则所有正则表达式都会失败但是有些人可能会这样做。)

  • 如果您要查找的参数包含在正则表达式中有意义的字符(例如,$),它们都会失败。

  • 哦,他们都没有考虑多个结果(例如,路径?foo = bar& foo = baz),这在查询字符串中是完全有效且相对常见的。

这对于普通的字符串函数来说确实是一项工作,如this answer中所述。我已经把这个功能写得有些不同了风格,但算法很合理。

答案 3 :(得分:0)

检查这个小实用程序http://jsfiddle.net/gwB2C/2/

用法:

var up = new URLParser();
var urlObj = up.parse('http://localhost/xxx.php?tPath=&action=xxx&pid=37&value=13&fname=aaaa&fone=4321122');
alert(urlObj.params['fname']); //alerts 'aaaa'

urlObj的值:

baseURL: "http://localhost/xxx.php"
params:{
    action: "xxx"
    fname: "aaaa"
    fone: "4321122"
    pid: "37"
    tPath: ""
    value: "13"
}
queryString: "tPath=&action=xxx&pid=37&value=13&fname=aaaa&fone=4321122"