Измените параметры запроса URL, используя динамический параметр и значение в jQuery - PullRequest
0 голосов
/ 13 декабря 2018

Мне нужно изменить значение параметров запроса данного URL независимо от типа значения.

У меня есть такая функция, как

function urlGenerator (key, value) {
    var url = "www.domain.com/?id=10&name=xxx&dob=2018-12-13";
    // change the value for given key
    return url;
}

Порядок параметров запроса не фиксирован,Это может быть любой порядок.Я думаю, что решение может быть найдено с помощью Regex.

Мне нужно универсальное решение, независимо от типа значения, указанного выше указанного URL.Мне нужно вызвать приведенный выше метод, как показано ниже, и получить итоговый URL.

result = urlGenerator('id', 15);
result = urlGenerator('name', 'yyy');
result = urlGenerator('dob', '2018-10-20');

Заранее спасибо !!

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Вы можете сделать это следующим образом

Итак, здесь во временной переменной мы строим выражение для регулярного выражения, используя string template, а затем RegExp меняем его на объект регулярного выражения.затем, используя метод replace, мы заменим matched value на value supplied in function.

function urlGenerator (key, value) {
    let temp = '(?<='+`${key}`+'=)[^&]+'
    let reg = new RegExp(temp,'g');
    console.log(reg);
    var url = "www.domain.com/?id=10&name=xxx&dob=2018-12-13";
    // change the value for given key
    return url.replace(reg, value);
}

result = urlGenerator('id', 15);
console.log(result);
result = urlGenerator('name', 'yyy');
console.log(result);
result = urlGenerator('dob', '2018-10-20');
console.log(result);
0 голосов
/ 13 декабря 2018

Я использую replace для изменения значения с помощью регулярных выражений.

Попробуйте эту функцию urlGenerator:

function urlGenerator(url, field, value) {
    var reg = new RegExp('('+field+'=[^&]*)', "");
    return url.replace(reg, field+'='+value);
}

РЕДАКТИРОВАТЬ:

Если вы не хотитестатический URL в вашей функции:

function urlGenerator(field, value) {
    var url = "www.domain.com/?id=10&name=xxx&dob=2018-12-13";
    var reg = new RegExp('('+field+'=[^&]*)', "");
    return url.replace(reg, field+'='+value);
}
...