2014-03-05 52 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

相关问题