我一直在寻找一种方法来设置一个cookie,如果一个URL参数持续存在。问题是,URL参数的名称是半动态的。Javascript:设置cookie - 动态URL参数名称
的网址是:
http://zzzz.test.bbbb/index.html?transaction[XXXX]=YYYYY
的XXXX是将根据客户的变化,YYYY是实际值(交易号)的用户ID。
我有以下代码,但它不会识别brakets,也不会识别内部。我如何设置它来识别包括胸罩和动态用户ID在内的URL参数?
这里是我的代码:
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"));
}
});
任何暗示将不胜感激。
谢谢!
NEW ADDITION ==========================
对于具有以下格式的链接:
http://zzzz.test.bbbb/index.html?transaction[XXXX][zzzzz]=YYYYY
正确的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, " "));
}
任何想法?
你正在设置的cookie是'Transacion_ID',你为什么要记录'transaction'? – Barmar 2014-09-23 08:37:58
您正在查找名为'transaction'的URL参数,而不是'transaction [XXXX]'。 ''URLparam()'函数中没有任何内容允许'name'后的可选括号。 – Barmar 2014-09-23 08:39:38
Cookie的名称可以更改。主要问题是如何查找URL参数'transaction [XXXX]',其中XXX是任何数字值,并且括号也是可识别的 – 2014-09-23 08:48:12