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 Не забудьте принять ответ, если удовлетворены

Другие вопросы по тегам