Javascript:设置cookie - 动态URL参数名称

时间:2014-09-23 08:34:46

标签: javascript url cookies dynamic parameter-passing

如果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, " "));
}

有什么想法吗?

1 个答案:

答案 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]
    );
}