6

A question asked without possibly an end is how do I get variable from a URL. In all my searching I have found several very good ways to get A=aValue from the url.

But my question is I need

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

I need an array of the two A's in the url and I need to know that aValue was the first one and secondAValue was the second

I have jquery Mobile.

Update

So this is what I have now

var urlParamDevice = getURLParameter('DeviceID');


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

The getURLParameter(name) needs to be a little more robust.

Update 2, 2014/03/07 Here is what I came up with from the suggested answer

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;
}
Brian Hanf
  • 544
  • 2
  • 11
  • 31

3 Answers3

2

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();
 }
  • Welcome to SO, posting a code as an answer might not be very useful without explanation. Could you edit your answer to had some explanation? You might be interested to read [how to write a good answer](https://stackoverflow.com/help/how-to-answer) – Nuageux May 29 '17 at 08:08
0

That would be by doing as: https://stackoverflow.com/a/1099670/1020854 - But with a little modification

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"}
Community
  • 1
  • 1
fiinix
  • 142
  • 3
0

Sometimes this will work:

A[]=aValue&A[]=secondAValue

Otherwise you can do this:

A_1=aValue&A_2secondAValue

You can split on the the underscore or use mostly any character of your choice to differentiate values of querystring "A"

Jay
  • 1
  • 1
  • I understand, but that is not how the information is coming. I have to consume, not create. It's possible that we have 20 or 30 A's – Brian Hanf Mar 05 '14 at 21:27
  • If you have the whole querystring, I suppose you could split on '&' and then on '=' and build a multimap/hashmap or list of arrays based on the keyname – Jay Mar 05 '14 at 21:40