可能重复:
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作为参数传递给它的函数,它返回它的值。
我将如何做到这一点?
答案 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"