Изменить параметры запроса URL-адреса с помощью динамического параметра и значения в jQuery

Мне нужно изменить значение параметров запроса данного 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');

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

Вам нужно будет проанализировать URL-адрес, чтобы получить объект со всеми параметрами, добавить / изменить значение, которое вам нужно изменить, и перестроить URL-адрес. См., Например, stackoverflow.com/questions/8486099/… для первого шага.

jeroen 13.12.2018 10:00

почему здесь метка php?

mickmackusa 13.12.2018 10:07

@mickmackusa При добавлении тега регулярного выражения SO предложил добавить язык.

Vinoth Kumar 13.12.2018 10:10

javascript - это язык ... и тот, который вы используете.

mickmackusa 13.12.2018 10:11

URL-адрес в вашей функции статичен?

Mickaël Leger 13.12.2018 10:11

@MickaelLeger Да

Vinoth Kumar 13.12.2018 10:13
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
6
1 884
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я использую 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);
}
Ответ принят как подходящий

Вы можете сделать это так

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

function urlGenerator (key, value) {
    let temp = '(?<='+`${key}`+'=)[^&]+'
    let reg = new RegExp(temp,'g');
    console.info(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.info(result);
result = urlGenerator('name', 'yyy');
console.info(result);
result = urlGenerator('dob', '2018-10-20');
console.info(result);

@VinothKumar всегда рад помочь :)

Code Maniac 13.12.2018 10:34

@Jouby Я пробовал ваше первое решение, но оно не работает должным образом. Перед отредактированным ответом этот ответ публикуется и работает нормально. Вот почему я не ответил на ваш ответ.

Vinoth Kumar 13.12.2018 10:46

Другие вопросы по теме