getParameter - параметр URL с динамическими значениями имени
Я изо всех сил пытался найти способ установить cookie, если параметр URL присутствует. Проблема в том, что имя параметра URL наполовину динамическое.
URL будет:
http://zzzz.test.bbbb/index.html?transaction[XXXX][zzzzz]=YYYYY
куда XXXX
а также zzzzz
являются частью имени URL, но могут меняться в зависимости от того, что в ссылке.
Как бы правильно getParameterByName
функция выглядит так, чтобы распознать параметр URL transaction[XXXX][zzzzz]
?
Я пробовал это, но это не работает:
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp(name + '(?:\\[\\d+\\]?:\\[\\d+\\])?=' + '(.+?)(&|$)'),
results = regex.exec(location.search);
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
if (getParameterByName("transaction")) {
set_cookie ("Transaction_ID", getParameterByName("transaction"));
}
Есть идеи?
1 ответ
Проверьте это JSBIN. Это поможет вам. Замените locatStr на window.location.search; Приведенный ниже код будет работать во всех сценариях
function getParameterByName(){
var locatStr = '?xyz=123&transaction[XXXX][zzzzz]=YYYYY',
searchStr = locatStr.split('?')[1],
matchArr = searchStr.match(/transaction\[[a-zA-Z0-9]+\]\[[a-zA-Z0-9]+\]/gi),
para;
if(matchArr){
var temp = searchStr.split(matchArr[0]+'=')[1];
return ((temp.indexOf('&')!=-1) ? temp.split('&')[0] : temp);
}
else{
return false;
}
}
var param = getParameterByName();
console.log(param);
if(param){
console.log('set cookie here');
}
else{
console.log('no cookie present');
}
PS Не забудьте принять ответ, если удовлетворены