2012-03-15 133 views
2

可能重复:
How can I get a specific parameter from location.search?如何从javascript中的url获取参数值?

我有类似下面的网址。

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作为参数传递给它,并返回它的值。

我该怎么做?

+2

看到这个答案:http://stackoverflow.com/questions/901115/get-query-string-values-in-javascript/2880929#2880929 – 2012-03-15 11:25:42

+1

这个职位的回答可以帮助你。 http://stackoverflow.com/questions/979975/how-to-get-the-value-from-url-parameter – matheusvmbruno 2012-03-15 11:27:36

回答

10

看看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

使用下面的函数

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]; 
} 
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" 
1

嗯,有三个答案已经,所有这些都使用正则表达式。但是一个正则表达式对于这个工作来说确实是错误的工具。正如某人所说的,有些人在遇到问题时会想:“我知道,我会用正则表达式!”现在他们有两个问题。这里有一些原因,这些问题的答案是错误的:

  • 如果“名字”你正在寻找中有正则表达式的字符,你需要逃脱他们,以及所有使用regexen失败URL是否使用路径部分的&符号(不符合RFC,但有些人可能会这样做)。

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

  • 哦,它们都未能解释多个结果(例如,path?foo = bar & foo = baz),这在querystrings中是完全有效和相对常见的。

这真的是一个普通醇字符串函数的工作,如this answer中给出的。我会用不同的风格写出这个函数,但算法很有用。