0

如果 URL 参数存在,我一直在努力寻找一种设置 cookie 的方法。问题是,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"));
}

有任何想法吗?

4

1 回答 1

0

检查这个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如果满意不要忘记接受答案

于 2014-09-27T12:13:52.160 回答