У меня есть ссылка с GET параметрами вот такого вида:
www.example.com/page.html?x=5&y=7&z=item1-item2-item3-item6
Мне нужно получить полное значение параметра z. Когда пытаюсь считать URL, получаю только item1. Как правильно это сделать с помощью JavaScript?
Пробовал разные способы, но результат всегда обрезанный. Может есть какой-то стандартный метод для работы с параметрами URL? Или нужно использовать регулярные выражения?
Буду благодарен за рабочий пример кода.
что именно не работает с получением полного значения? возможно проблема в парсинге параметров? покажи код который обрезает результат - так легче понять где косяк. дефисы в параметрах обычно проблем не создают
URLSearchParams - твой лучший друг тут. Делай так:
const url = new URL(window.location.href);
const z = url.searchParams.get('z');
console.log(z); // получишь полное значение item1-item2-item3-item6
Для произвольной строки:
const params = new URLSearchParams('?x=5&y=7&z=item1-item2-item3-item6');
const z = params.get('z');
Корректно обрабатывает все символы в параметрах, включая дефисы.
я обычно использую старый добрый способ через split() - работает везде и просто понятен:
const queryString = window.location.search;
const params = queryString.substring(1).split('&');
for (let param of params) {
const [key, value] = param.split('=');
if (key === 'z') {
console.log(decodeURIComponent(value));
}
}
не забудь про decodeURIComponent, а то символы криво отобразятся. работает даже в старых браузерах, где URLSearchParams может не поддерживаться