如果URL参数有效,我一直在寻找一种设置cookie的方法。问题是,URL参数的名称是动态的一半。
网址为:
http://zzzz.test.bbbb/index.html?transaction[XXXX][zzzzz]=YYYYY
其中XXXX
和zzzzz
是网址名称的一部分,但可以根据链接中的内容进行更改。
为了识别网址参数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"));
}
有什么想法吗?
答案 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。如果满意,别忘了接受答案