2016-06-16 4 views
0

У меня проблема с функцией параметра get, у меня есть 2 параметра engTrackid и eng. Параметры автоматически добавляются в мои URL-ссылки. Мне нужно захватить параметр eng, но вместо этого он захватывает engTrackId и разбивает его.Ошибка параметра

I.e. www.test.com/reg?engTrackid=123&eng=456

Моя страница на страницу регистрации, после того, как отправить, он должен передать eng значение на странице TY, но это выглядит следующим образом:

www.test.com/ty?eng=rackid=456 вместо www.test.com/ty?eng=456

Это функция Я с помощью:

function getUrlVars() { 
    var vars = {}; 
    var parts = window.location.href.replace(
    /[?&]+([^=&]+)=([^&]*)/gi, 
    function(m,key,value) { 
     vars[key] = value; 
    } 
); 
    return vars; 
} 
var elq = getUrlVars()["elq"]; 

Как примечание, я не могу изменить порядок параметров :(

+0

В коде вы пытаетесь получить '[" elq "]'. Это правильно? –

+0

Можете ли вы устранить проблему на странице регистрации, а не пытаться исправить URL-адрес, вызванный предыдущей страницей? –

ответ

0

Вы можете это изменить:

elq = getUrlVars() ["elq"];

к этому:

eng = getUrlVars()["eng"]; 

для того, чтобы получить правильный "англ" значение параметра. Кроме того, когда вы звоните getUrlVars() вы можете получить его значение при чтении

vars.eng 
0

Ваша getUrlVars() функция работает хорошо для стандартных совместимых URL-адресов, таких как www.test.com/reg?engTrackid=123 & анг = 456.

Чтобы правильно считывать параметры ПОЛУЧИТЬ а «сломанных» URL, такие как www.test.com/ty?eng=rackid=456 вам нужно изменить регулярное выражение внутри этой функции:

function getUrlVars(href) { 
 
    var vars = {}; 
 
    href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m, key, value) { 
 
    vars[key] = value; 
 
    }); 
 
    return vars; 
 
} 
 

 
function getBrokenUrlVars(href) { 
 
    var vars = {}; 
 
    href.replace(/[?&]+([^=&]+)=(?:[^=&]*=)*([^&]*)/gi, function(m, key, value) { 
 
    vars[key] = value; 
 
    }); 
 
    return vars; 
 
} 
 

 
href1 = "www.test.com/reg?engTrackid=123&eng=456"; 
 
href2 = "www.test.com/ty?eng=rackid=456"; 
 

 
console.log(getUrlVars(href1)); // {"engTrackid": "123", "eng": "456"} 
 
console.log(getUrlVars(href2)); // {"eng": "rackid=456"} 
 

 
console.log(getBrokenUrlVars(href1)); // {"engTrackid": "123", "eng": "456"} 
 
console.log(getBrokenUrlVars(href2)); // {"eng": "456"}

Если вы можете, попытайтесь устранить проблему, приводящую к сломанным URL-адресам, хотя!

+0

Спасибо! Я попробую это и вернусь на случай, если это не сработает! :) Спасибо! ... и да, я использовал параметр elq как параметр, но мне пришлось переключиться на eng :) – AMVL

+0

Это решение :) Спасибо! – AMVL

Смежные вопросы