2012-03-15 124 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中給出的。我會用不同的風格寫出這個函數,但算法很有用。