Мне нужно изменить значение параметра запроса, присутствующего в данном 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.
Есть ли у кого-нибудь решение для этого или другого лучшего решения?
Заранее спасибо!
Конечно, знал. Но ни одно не кажется точным решением.
Вы смотрели URLSearchParams? Есть даже JS полифилл для браузеров, которые не поддерживают его изначально.
Ваш вопрос непонятен. Где находится этот 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 Конечно. Я задам новый вопрос.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Почему бы вам не использовать простую замену?
var newUrl = location.href.replace("id = "+10, "id = "+15);
Я нашел это решение от Ответ на вопрос Измените значение строки запроса url с помощью jQuery (помечено как дубликат).
Но я не знаю значения «10», поскольку оно случайное. Как мне с этим справиться?
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» - это просто пример. Мне нужно общее регулярное выражение, которое также должно подходить для изменения параметра «имя».
Универсальные средства как? хотите изменить всю строку запроса?
Вы указали регулярное выражение для целого числа. Представьте, что у меня есть функция, которая принимает параметр и значение. Если я передам (id, 15) или (name, yyy), этот метод должен работать.
По крайней мере, используйте [0-9]+, а лучше просто класс символов \d+.
@VinothKumar Это не то, о чем спрашивает ваш вопрос. Если вы этого хотели, вам нужно было иметь в вашем вопросе и до того, как люди ответили. Вам нужно будет создать новый вопрос, чтобы задать нужное вам обобщение, поскольку изменение вопроса таким образом, что вы аннулируете ответы, противоречит политике.
@SumeshTG Спасибо. Это работает для того, о чем я просил. Мне нужно задать отдельный вопрос для вашего решения. В любом случае, я поддерживаю ваш ответ.
@SumeshTG Буквенно-цифровые символы - не единственные, которые допустимы в значениях запроса. Ваша строка var id2 = matches[0]; вызовет исключение, если поле key не существует в URL-адресе. И ваш RegExp, чтобы найти исходное значение, и ваш url.replace будут молча терпеть неудачу, давая ошибочные результаты, если есть поля (параметры запроса), которые слишком похожи (например, запрос - fooid=100&id=10, и вы пытаетесь изменить id).
@Makyen Вы правы.
Если вы выполните поиск в Google по названию, вы получите много ответов на свой вопрос.