【发布时间】:2014-09-23 08:34:46
【问题描述】:
如果 URL 参数存在,我一直在努力寻找一种设置 cookie 的方法。问题是,URL 参数的名称是半动态的。
网址是:
http://zzzz.test.bbbb/index.html?transaction[XXXX]=YYYYY
XXXX 是用户 ID,会根据客户而变化,YYYY 是实际值(交易号)。
我有以下代码,但它无法识别刹车或里面的东西。如何设置它以识别 URL 参数,包括括号和括号中的动态用户 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
为了识别 URL 参数 transaction[XXXX][zzzzz],正确的 getParameterByName 函数应该是什么样子的?
我试过了,但它不起作用:
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? -
您正在寻找一个名为
transaction的 URL 参数,而不是transaction[XXXX]。您的URLparam()函数中没有任何内容允许在name之后使用可选括号。 -
cookie的名称可以更改。主要问题是如何查找URL参数
transaction[XXXX],其中XXX是任意数值,括号也能识别 -
@Barmar:你会在
URLparam()中添加什么以允许和识别括号和其中的值? -
@Barmar 我在 URL 参数名称中包含方括号中的两个值的链接也遇到了同样的问题。我已经更新了显示我正在使用的代码的问题
标签: javascript url cookies dynamic parameter-passing