如果URL参数有效,我一直在寻找一种设置cookie的方法。问题是,URL参数的名称是动态的一半。
网址为:
http://zzzz.test.bbbb/index.html?transaction[XXXX]=YYYYY
XXXX是将根据客户而改变的用户ID,YYYY是实际值(交易号)。
我有以下代码,但它不会识别brakets也不会识别内部。如何设置它以识别URL参数,包括brakets和brakets中的动态用户ID?
这是我的代码:
function URLparam(name) {
return unescape(
(RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1]
);
}
if (URLparam("transaction") !== null && !get_cookie ("Transacion_ID")) {
set_cookie ("Transacion_ID", URLparam("transaction"));
}
if (get_cookie ("Transacion_ID")) {
console.log(get_cookie ("transaction"));
}
});
任何提示都会非常感激。
谢谢!
新增加==========================
对于具有以下格式的链接:
http://zzzz.test.bbbb/index.html?transaction[XXXX][zzzzz]=YYYYY
为了识别网址参数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, " "));
}
有什么想法吗?
答案 0 :(得分:0)
此URLparam()
版本允许在名称后面添加[XXX]
:
function URLparam(name) {
return unescape(
(RegExp(name + '(?:\\[\\d+\\])?=' + '(.+?)(&|$)').exec(location.search)||[,null])[1]
);
}
要允许多个数组索引,请将?
(对于可选)更改为*
(对于任意数量的重复):
function URLparam(name) {
return unescape(
(RegExp(name + '(?:\\[\\d+\\])*=' + '(.+?)(&|$)').exec(location.search)||[,null])[1]
);
}