我一直在尋找一種方法來設置一個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