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

时间:2014-09-27 09:10:47

标签: javascript function cookies url-parameters getparameter

如果URL参数有效,我一直在寻找一种设置cookie的方法。问题是,URL参数的名称是动态的一半。

网址为:

http://zzzz.test.bbbb/index.html?transaction[XXXX][zzzzz]=YYYYY

其中XXXXzzzzz是网址名称的一部分,但可以根据链接中的内容进行更改。

为了识别网址参数getParameterByName,正确的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 个答案:

答案 0 :(得分:0)

检查JSBIN。这会对你有所帮助。 用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');
}

P.S。如果满意,别忘了接受答案