2014-09-27 5 views
0

Я пытаюсь найти способ установить файл cookie, если параметр URL является постоянным. Проблема заключается в том, что имя параметра URL является наполовину динамическим.getParameter - параметр URL с динамическими значениями имени

URL-адрес будет:

http://zzzz.test.bbbb/index.html?transaction[XXXX][zzzzz]=YYYYY 

Где XXXX и zzzzz являются частью о названии URL, но может меняться в зависимости от того, что находится в ссылке.

Как правильно выглядеть функция 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, " ")); 
} 

if (getParameterByName("transaction")) { 
set_cookie ("Transaction_ID", getParameterByName("transaction")); 
} 

Есть идеи?

+0

Каковы значения, которые могут быть xxxx и zzzz? Это только алфавиты? или алфавитов и цифр? Также достаточно, если cookie будет установлен, если присутствует только транзакция слова? – wallop

+0

Также транзакция всегда является первым параметром запроса? – wallop

+0

@Wishy xxxx и zzzz могут быть буквами или цифрами. Параметр может быть в любом месте ссылки. Если это первый, он будет отображаться как «транзакция [XXXX] [zzzzz] = YYYYY', если это не первая, она выглядит как« & transaction [XXXX] [zzzzz] = YYYYY' –

ответ

0

Проверьте это JSBIN. Это поможет вам. Замените locatStr на window.location.search; Данный код будет работать во всех сценариях

function getParameterByName(){ 
    var locatStr = '?xyz=123&transaction[XXXX][zzzzz]=YYYYY', 
     searchStr = locatStr.split('?')[1], 
     matchArr = searchStr.match(/transaction\[[a-zA-Z0-9]+\]\[[a-zA-Z0-9]+\]/gi),  
     para; 

    if(matchArr){ 
      var temp = searchStr.split(matchArr[0]+'=')[1]; 
     return ((temp.indexOf('&')!=-1) ? temp.split('&')[0] : temp); 
     } 
     else{ 
     return false; 
     } 

} 


var param = getParameterByName(); 
console.log(param); 
if(param){ 
    console.log('set cookie here'); 
} 
else{ 
    console.log('no cookie present'); 
} 

P.S. Не забудьте принять ответ, если он удовлетворен

+0

Файл cookie установлен, но значение остается как «YYYYY». Значение cookie должно быть также динамическим в соответствии с тем, что находится в URL-адресе. –

+0

i упомянутый выше, пожалуйста, измените locatStr = window.location.search. Значение - это то, что появляется в URL-адресе. – wallop