我有带参数的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[]
??
答案 0 :(得分:5)
我知道这有点晚了,但是使用Javascript URL对象对我有用的非常简单的解决方案:
url_string = "https://example.com?options[]=one&options[]=two";
url = new URL(url_string);
options = url.searchParams.getAll("options[]");
console.log(options);
&#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;
}