Изменить значение параметра запроса с помощью jQuery

Мне нужно изменить значение параметра запроса, присутствующего в данном URL-адресе, с помощью jQuery.

Есть 2 возможных URL-адреса, например,

www.domain.com/?id=10&name=xxx

и

www.domain.com/?name=xxx&id=10

Мне нужно изменить значение параметра я бы в этом URL-адресе на что-то вроде www.domain.com/?id=15&name=xxx. Regex кажется решением для этого, но меня это сбивает с толку.

Возможное решение:

Выберите строку между "id =" и "&" (или) строку от "id =" до конца строки и замените ее желаемым значением 15.

Есть ли у кого-нибудь решение для этого или другого лучшего решения?

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

Если вы выполните поиск в Google по названию, вы получите много ответов на свой вопрос.

Carsten Løvbo Andersen 13.12.2018 07:42

Конечно, знал. Но ни одно не кажется точным решением.

Vinoth Kumar 13.12.2018 07:44

Вы смотрели URLSearchParams? Есть даже JS полифилл для браузеров, которые не поддерживают его изначально.

Agi Hammerthief 13.12.2018 07:49

Ваш вопрос непонятен. Где находится этот URL-адрес, который вы хотите изменить? Это фактический URL-адрес страницы, на которой вы работаете? Это href в <a>? Вдобавок вам также нужно сообщить нам точно, что вы хотите, а не «что-то вроде ...» Означает ли то, что вы сказали, что вы хотите, чтобы и www.domain.com/?id=10&name=xxx, и www.domain.com/?name=xxx&id=10 были заменены на www.domain.com/?id=15&name=xxx? Вас действительно волнует порядок (порядок имеет значение возможный, но обычно это не так. Вы просто не сказали нам, что на самом деле хотите)?

Makyen 13.12.2018 07:58

Редактирование вопросов для их улучшения (например, пояснение, добавление дополнительной информации и т. д.) рекомендуется. Однако редактирование вопроса с целью изменения его на другой вопрос, что приводит к аннулированию ответа, противоречит политике переполнения стека. Ваше редактирование здесь сделало это. Политика заключается в том, что другие пользователи должны заблаговременно отменять такие изменения. Я сделал это здесь. Вы рекомендуется задать новый вопрос, возможно, со ссылкой на этот для дополнительного контекста. Мы хотим помочь, но ваша новая / дополнительная проблема должна быть новым Вопросом.

Makyen 13.12.2018 08:27

@Makyen Конечно. Я задам новый вопрос.

Vinoth Kumar 13.12.2018 08:36
Поведение ключевого слова "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) для оценки ваших знаний,...
2
6
316
2

Ответы 2

Почему бы вам не использовать простую замену?

var newUrl = location.href.replace("id = "+10, "id = "+15);

Я нашел это решение от Ответ на вопрос Измените значение строки запроса url с помощью jQuery (помечено как дубликат).

Но я не знаю значения «10», поскольку оно случайное. Как мне с этим справиться?

Vinoth Kumar 13.12.2018 07:52

var url = "www.domain.com/?id=10&name=xxx";
changeUrl("id",15);
changeUrl("name","sumesh");
function changeUrl(key,value){
  var patt = new RegExp(key+"=[a-zA-Z0-9]+");
  var matches = patt.exec(url);
  var id2 = matches[0];
  url = url.replace(id2, key+'='+value);
  console.info(url);
}

Для этого используйте RegExp.

Параметр «id» - это просто пример. Мне нужно общее регулярное выражение, которое также должно подходить для изменения параметра «имя».

Vinoth Kumar 13.12.2018 07:57

Универсальные средства как? хотите изменить всю строку запроса?

Sumesh TG 13.12.2018 07:59

Вы указали регулярное выражение для целого числа. Представьте, что у меня есть функция, которая принимает параметр и значение. Если я передам (id, 15) или (name, yyy), этот метод должен работать.

Vinoth Kumar 13.12.2018 08:03

По крайней мере, используйте [0-9]+, а лучше просто класс символов \d+.

Makyen 13.12.2018 08:03

@VinothKumar Это не то, о чем спрашивает ваш вопрос. Если вы этого хотели, вам нужно было иметь в вашем вопросе и до того, как люди ответили. Вам нужно будет создать новый вопрос, чтобы задать нужное вам обобщение, поскольку изменение вопроса таким образом, что вы аннулируете ответы, противоречит политике.

Makyen 13.12.2018 08:06

@SumeshTG Спасибо. Это работает для того, о чем я просил. Мне нужно задать отдельный вопрос для вашего решения. В любом случае, я поддерживаю ваш ответ.

Vinoth Kumar 13.12.2018 08:38

@SumeshTG Буквенно-цифровые символы - не единственные, которые допустимы в значениях запроса. Ваша строка var id2 = matches[0]; вызовет исключение, если поле key не существует в URL-адресе. И ваш RegExp, чтобы найти исходное значение, и ваш url.replace будут молча терпеть неудачу, давая ошибочные результаты, если есть поля (параметры запроса), которые слишком похожи (например, запрос - fooid=100&id=10, и вы пытаетесь изменить id).

Makyen 13.12.2018 08:45

@Makyen Вы правы.

Sumesh TG 13.12.2018 08:48

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

Событие jQuery MouseWheel для события зажима
Ошибка инициализации макета пользовательского интерфейса - элемент центральной панели не существует, центральная панель является обязательным элементом
Сделайте звездный рейтинг CSS динамическим
Выберите значение параметра щелкните затем автоматически выберите другую страницу выберите параметр, который пользователь выбирает перед использованием jquery
Как отображать имя при наведении курсора мыши на div, где элемент загружается из массива
Как установить автоматически выбранную опцию в раскрывающемся списке с текущим временем?
Получение значения из базы данных с помощью jquery при изменении события
Таблица дерева jQuery с данными JSON
Javascript при установленном флажке клонирует этот div, при снятом флажке удаляет этот div
Метод jQuery.fn.on () - необходимо передать this в качестве параметра функции