【问题标题】:How to get multiple parameters with same name from a URL in JavaScript如何从 JavaScript 中的 URL 获取多个具有相同名称的参数
【发布时间】:2017-05-29 15:40:19
【问题描述】:

一个可能没有结束的问题是如何从 URL 中获取变量。在我的所有搜索中,我发现了几种从 url 获取 A=aValue 的非常好的方法。

但我的问题是 我需要

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

我需要 url 中两个 A 的数组,我需要知道 aValue 是第一个,secondAValue 是第二个

我有 jquery Mobile。

更新

这就是我现在所拥有的

var urlParamDevice = getURLParameter('DeviceID');


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

getURLParameter(name) 需要更健壮一些。

更新 2,2014/03/07 这是我从建议的答案中得出的结论

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;
}

【问题讨论】:

  • 这里有将数组(或任何其他对象)作为参数传递的示例:api.jquery.com/jQuery.param
  • 谢谢,试图从 URL 中获取一个数组,但没有通过。

标签: javascript jquery


【解决方案1】:

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

【讨论】:

  • 欢迎来到 SO,如果没有解释,发布代码作为答案可能不是很有用。你能编辑你的答案来解释一下吗?您可能有兴趣阅读how to write a good answer
【解决方案2】:

那就是: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"}

【讨论】:

  • 关闭。我想我可以让它工作。我只想要“A”
  • 我不完全确定你在哪里之后的数据,但这确实提取了所有“A”
  • 而她只想要 D,呵呵,笑话放在一边:P
【解决方案3】:

有时这会起作用:

A[]=aValue&A[]=secondAValue

否则你可以这样做:

A_1=aValue&A_2secondAValue

您可以拆分下划线或使用您选择的任何字符来区分查询字符串“A”的值

【讨论】:

  • 我明白,但信息不是这样来的。我必须消费,而不是创造。我们可能有 20 或 30 个 A
  • 如果你有整个查询字符串,我想你可以在 '&' 上拆分,然后在 '=' 上拆分,并根据键名构建多映射/哈希映射或数组列表
猜你喜欢
  • 2016-02-04
  • 1970-01-01
  • 1970-01-01
  • 2013-01-21
  • 2010-09-26
  • 2021-11-24
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
相关资源
最近更新 更多