2011-07-03 36 views
10

我正在使用javascript,並希望獲取我擁有的URL字符串,並將其分解爲其組件,如主機,路徑和查詢參數。將URL分解爲其組件

我需要這樣做才能得到其中一個查詢參數,這個參數本身就是一個URL,因此被編碼在原始URL字符串中。

我覺得應該有一個簡單的方法來在Javascript中做到這一點。也許,一些看起來是這樣的:

var what_I_Want = url("http://www.domain.com?queryArg1=somequeryargument").getQueryArgumentValue("queryArg1"); 

回答

14

parseUri功能將你需要

編輯一切 另外,您可以get the DOM to do the hard work爲你訪問一個新創建的a對象的不同部分的性質URL。

+0

是否爲查詢參數的DOM解決方案的工作還是它只能獲得足夠具體,不破壞它到具體的鍵值對返回整個查詢字符串和解碼呢? –

+0

DOM解決方案將只返回整個查詢字符串。你可以在「&」上分割(),然後遍歷這些結果,在「=」上使用split(),這會給你一個鍵/ val對。測試你正在搜索的那個關鍵點,跳出循環並返回val。 – Tak

+0

parseuri工作得非常好 –

1

也許不是這樣做,但一個簡單的方法來獲取JavaScript中的查詢字符串是隻使用沿東西線的最大方式:基於

a = "http://www.domain.com?queryArg1=somequeryargument"; 
query = a.substring(a.indexOf('?')+1); 

然後,您可以將查詢了&的和再次= =得到你需要的任何參數。

很抱歉,如果這不是因爲它非常有幫助的有點低科技的方法:P

編輯: 只是寫了一個小巧的JavaScript對象,以便爲您的網址查詢參數(有點像)你的榜樣。只測試它在Chrome,但在理論上它應該工作:)

//Quick and dirty query Getter object. 
function urlQueryGetter(url){ 
    //array to store params 
    var qParam = new Array(); 
    //function to get param 
    this.getParam = function(x){ 
    return qParam[x]; 
    } 

    //parse url 
    query = url.substring(url.indexOf('?')+1); 
    query_items = query.split('&'); 
    for(i=0; i<query_items.length;i++){ 
     s = query_items[i].split('='); 
     qParam[s[0]] = s[1]; 
    } 

} 

//Useage 
var bla = new urlQueryGetter("http://www.domain.com?queryArg1=somequeryargument&test=cheese"); 
alert(bla.getParam('test')); 
1

在javascript中可以使用的PARAMS分裂(),並且使用定位對象的協議和域做到這一點 - 像卡爾建議

您也可以使用parseUri作爲德建議

還有一個jQuery插件,這使得如果你已經在你的項目中使用jQuery解析簡單:https://github.com/allmarkedup/jQuery-URL-Parser#readme

例子:

$.url('http://allmarkedup.com?sky=blue&grass=green').param('sky'); // returns 'blue' 
2
<script type="text/javascript" language="javascript"> 
newURL = window.location.protocol + "//" + window.location.host + "/" + window.location.pathname; 
</script> 

Hope this will help..