2014-03-05 108 views
3

問一個沒有可能結束的問題是如何從URL獲取變量。在我所有的搜索中,我發現了幾種非常好的方法從url中獲取A=aValue如何從JavaScript中的URL獲取多個具有相同名稱的參數

但我的問題是 我需要

?Company=FLHS&Device=Crosstown_PCC_01&A=aValue&A=secondAValue 

我需要的兩個A url中的數組,我需要知道aValue是第一個和secondAValue是第二

我有jQuery Mobile。

更新

原來這就是我現在

var urlParamDevice = getURLParameter('DeviceID'); 


function getURLParameter(name) { 
    return decodeURI(
     (RegExp(name + '=' + '(.+?)(&|$)').exec(location.search) || [, null])[1] 
    ); 

的getURLParameter(名稱)需要一點更穩健。

更新2,2014年3月7日 這裏是我想出了從建議的答案

function getQueryParams(name) { 
    qs = location.search; 

    var params = []; 
    var tokens; 
    var re = /[?&]?([^=]+)=([^&]*)/g; 

    while (tokens = re.exec(qs)) 
    { 
     if (decodeURIComponent(tokens[1]) == name) 
     params.push(decodeURIComponent(tokens[2])); 
    } 

    return params; 
} 
+1

有一些傳遞數組(或任何其他對象)作爲參數的示例:https://api.jquery.com/jQuery.param/ – Rainbolt

+0

謝謝,試圖從URL中獲取數組而不通過一個。 –

回答

0

這將是這樣做的:https://stackoverflow.com/a/1099670/1020854 - 但有一點修改

function getQueryParams(qs) { 
    qs = qs.split("+").join(" "); 

    var params = [], tokens, 
    re = /[?&]?([^=]+)=([^&]*)/g; 

    while (tokens = re.exec(qs)) { 
     params.push({k:decodeURIComponent(tokens[1]),v:decodeURIComponent(tokens[2])}); 
    } 

    return params; 
} 

var obj = 
    getQueryParams("?Company=FLHS&Device=Crosstown_PCC_01&A=aValue&A=secondAValue") 

obj[0] is {k: "Company", v: "FLHS"} 
obj[1] is {k: "Device", v: "Crosstown_PCC_01"} 
obj[2] is {k: "A", v: "aValue"} 
obj[3] is {k: "A", v: "secondAValue"} 
+0

關閉。我想我可以讓它工作。我只想要「A」 –

+0

我並不確定你後面的數據是什麼,但這確實提取了所有「A」的 – fiinix

+1

而她只想要D,笑話開到一邊:P – fiinix

0

有時這會工作:

A[]=aValue&A[]=secondAValue 

否則,你可以這樣做:

A_1=aValue&A_2secondAValue 

您可以分割的下劃線或使用您所選擇的大多是任何字符來區分查詢字符串值「A」

+0

我明白,但這不是信息的來臨。我必須消費,而不是創造。有可能我們有20或30個的 –

+0

如果你有整個查詢字符串,我想你可以在'&'上分割,然後在'='上,根據關鍵字構建一個multimap/hashmap或者數組列表 – Jay

0

function getparamNameMultiValues(paramName){ 
 
\t  var sURL = window.document.URL.toString(); 
 
\t  var value =[]; 
 
\t  if (sURL.indexOf("?") > 0){ 
 
\t   var arrParams = sURL.split("?"); 
 
\t   var arrURLParams = arrParams[1].split("&"); 
 
\t   for (var i = 0; i<arrURLParams.length; i++){ 
 
\t    var sParam = arrURLParams[i].split("="); 
 
\t    console.log(sParam); 
 
\t    if(sParam){ 
 
\t \t    if(sParam[0] == paramName){ 
 
\t \t    \t if(sParam.length>0){ 
 
\t \t    \t \t value.push(sParam[1].trim()); 
 
\t \t    \t } 
 
\t \t    } 
 
\t    } 
 
\t   } 
 
\t  } 
 
\t  return value.toString(); 
 
\t }

+0

歡迎來到SO如果沒有解釋,發佈代碼作爲答案可能不是很有用。你能編輯你的答案有一些解釋嗎?你可能有興趣閱讀[如何寫出一個好的答案](https://stackoverflow.com/help/how-to-answer) – Nuageux

相關問題