【问题标题】:Javascript: Set cookie - Dynamic URL parameter NameJavascript:设置 cookie - 动态 URL 参数名称
【发布时间】: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


【解决方案1】:

此版本的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]
    );
}

【讨论】:

  • 是的!完美……这正是我想要的。谢谢巴尔玛!
  • 在 URL 参数名称中包含方括号中的两个值的链接时,我遇到了同样的问题。我已经更新了显示我正在使用的代码的问题
猜你喜欢
  • 1970-01-01
  • 2019-08-22
  • 2015-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多