使用JavaScript从url获取数组

时间:2015-08-22 11:13:22

标签: javascript

我有带参数的Url我可以得到除数组之外的所有参数,这是我的网址解码:

name=myname&type=Restaurant Cuisine Moderne / Créative&heure=06 :00 - 06 :30&nbrPers=10&service[]=Canbeprivatized&service[]=Englishspoken&service[]=Françaisparle&option[]=Check&option[]=CreditCard&typeProfile=Amateur

这是我的JavaScript功能:

function getUrlParameter(sParam) {
    var sPageURL =decodeURIComponent(window.location.search.substring(1));
    var sURLVariables = sPageURL.split('&');
    for (var i = 0; i < sURLVariables.length; i++) {
        var sParameterName = sURLVariables[i].split('=');
        if (sParameterName[0] == sParam) {
            return sParameterName[1];
        }
    }
}

警告测试:

var name = getUrlParameter('name');
    alert("name ;"+name);//  show : myname
var service= getUrlParameter('service[]');
        alert("servoce:"+service);//  show :only  "Canbeprivatized" i cant get the others service[]

如何获得所有service[]option[] ??

3 个答案:

答案 0 :(得分:5)

我知道这有点晚了,但是使用Javascript URL对象对我有用的非常简单的解决方案:

&#13;
&#13;
url_string = "https://example.com?options[]=one&options[]=two";
url = new URL(url_string);
options = url.searchParams.getAll("options[]");
console.log(options);
&#13;
&#13;
&#13;

如果要返回不属于数组的常规参数,只需将getAll(参数)更改为get(参数)。

答案 1 :(得分:1)

我发现解决方案是功能改变:

function getUrlParameter(sParam) {
    var sPageURL = decodeURIComponent(window.location.search.substring(1));
    var array =[]
    var sURLVariables = sPageURL.split('&');
    for (var i = 0; i < sURLVariables.length; i++) {
        var sParameterName = sURLVariables[i].split('=');
        if (sParameterName[0] == sParam) {
            array.push(sParameterName[1]);
        }
    }
    return array;
}

现在我返回的数组不是一个元素

答案 2 :(得分:0)

function URLToArray(url) {
    var request = {};
    var arr = [];
    var pairs = url.substring(url.indexOf('?') + 1).split('&');
    for (var i = 0; i < pairs.length; i++) {
      var pair = pairs[i].split('=');

      //check we have an array here - add array numeric indexes so the key elem[] is not identical.
      if(endsWith(decodeURIComponent(pair[0]), '[]') ) {
          var arrName = decodeURIComponent(pair[0]).substring(0, decodeURIComponent(pair[0]).length - 2);
          if(!(arrName in arr)) {
              arr.push(arrName);
              arr[arrName] = [];
          }

          arr[arrName].push(decodeURIComponent(pair[1]));
          request[arrName] = arr[arrName];
      } else {
        request[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
      }
    }
    return request;
}
function endsWith(str, suffix) {
    return str.indexOf(suffix, str.length - suffix.length) !== -1;
}