JavaScript URLSearchParams — параметри рядка запиту


URLSearchParams читає й будує параметри рядка запиту — те, що йде після знака питання: ?page=2&sort=new.

автор: NagarD

Загальний опис

Раніше це різали рядок по & і = вручну — і щоразу забували про екранування, через що пробіл чи кирилиця ламали посилання.

Тепер це об'єкт із методами: get(), set(), append(), delete(). Екранування він робить сам, в обидва боки.

Один нюанс, який дивує: один ключ може повторюватись (?tag=css&tag=js). Тому get() віддає перше значення, а всі — getAll().

Для читання параметрів поточної сторінки є готовий екземпляр: location.search віддається йому в конструктор, або просто new URL(location).searchParams.

автор: NagarD

Порада

new URLSearchParams(new FormData(form)) перетворює форму на рядок запиту одним рядком — зручно для фільтрів, які мають лишатись у посиланні.

автор: NagarD

Синтаксис

const params = new URLSearchParams(location.search);

методи

Метод Опис
get Перше значення параметра.
getAll Усі значення параметра.
set Задає параметр, замінюючи попередні значення.
append Додає значення, не чіпаючи наявні.
has Чи є параметр.
delete Видаляє параметр.
toString Серіалізує в рядок запиту без ?.
forEach Виконує функцію для кожної пари.
sort Сортує параметри за іменем.

властивості

Властивість Опис
size Кількість параметрів.

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
URLSearchParams 49+ 29+ 10.1+ 36+ 17+ -
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
URLSearchParams 49+ yes yes 10.3+

Приклади

+ запропонувати свій приклад у пісочниці

Прочитати фільтри зі сторінки й перезібрати адресу.

// ?tag=css&tag=js&page=2
const params = new URLSearchParams(location.search);

console.log(params.get('page'));  // '2' — завжди рядок
console.log(params.getAll('tag')); // ['css', 'js'] — ключ може повторюватись

params.set('page', '3');
params.append('tag', 'html');
params.delete('sort');

console.log(params.toString()); // 'tag=css&tag=js&page=3&tag=html'

// екранування — саме собою
const q = new URLSearchParams({ q: 'css селектор' });
console.log(q.toString()); // 'q=css+%D1%81%D0%B5%D0%BB%D0%B5%D0%BA%D1%82%D0%BE%D1%80'
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід