Javascript getParameter-具有动态名称值的URL参数

Javascript getParameter-具有动态名称值的URL参数,javascript,function,cookies,url-parameters,getparameter,Javascript,Function,Cookies,Url Parameters,Getparameter,我一直在寻找一种在URL参数为persent时设置cookie的方法。问题是,URL参数的名称是半动态的 网址为: http://zzzz.test.bbbb/index.html?transaction[XXXX][zzzzz]=YYYYY 其中XXXX和zzzzz是URL名称的一部分,但可以根据链接中的内容进行更改 为了识别URL参数事务[XXXX][zzzzz],正确的getParameterByName函数应该是什么样子的 我尝试过这个,但不起作用: function getParam

我一直在寻找一种在URL参数为persent时设置cookie的方法。问题是,URL参数的名称是半动态的

网址为:

http://zzzz.test.bbbb/index.html?transaction[XXXX][zzzzz]=YYYYY
其中XXXX和zzzzz是URL名称的一部分,但可以根据链接中的内容进行更改

为了识别URL参数事务[XXXX][zzzzz],正确的getParameterByName函数应该是什么样子的

我尝试过这个,但不起作用:

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"));
}
有什么想法吗?

检查这个。这对你有帮助。 用window.location.search替换locatStr;下面的代码将在所有场景中工作

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');
}

注意:如果满意,不要忘记接受答案

xxxx和zzzz可以是什么类型的值?只是字母表吗?还是字母和数字?如果仅存在单词transaction,则设置cookie是否足够?transaction是否始终是第一个查询参数?@Wishy xxxx和zzzz可以是字母或数字。参数可以位于链接中的任何位置。如果它是第一个,它将显示为?transaction[XXXX][zzzzz]=YYYYY如果它不是第一个,它显示为&transaction[XXXX][zzzzzzz]=YYYYY这个词transaction只是URL参数的名称,我将通过运行函数getParameterByNametransaction{set_cookie transaction_ID,getParameterByNametransaction;}来设置cookie阿德里安,对不起,我没有解释清楚。我想为您创建一个正则表达式,所以我问了这些问题。我很清楚这些是什么意思。cookie已设置,但值保持为yyyy。cookie值也应该根据URL中的内容是动态的。我上面提到过,请更改locatStr=window.location.search。值是url中显示的任何内容。