Як отримати значення рядка запиту в JavaScript?
Чи існує спосіб без плагінів отримати значення рядок запиту за допомогою jQuery (або без нього)?
Якщо так, то як? Якщо ні, то чи існує плагін, який може це зробити?
2701
3
**Оновлення: вересень 2018 року
Ви можете використовувати URLSearchParams, який є простим і має пристойну (але не повну) підтримку браузерів.
Оригінал
Для цього вам не потрібен jQuery. Ви можете використовувати просто чистий JavaScript:
Використання:
Примітка: Якщо параметр зустрічається кілька разів (
?foo=lorem&foo=ipsum
), ви отримаєте перше значення (lorem
). Стандарту щодо цього не існує, і використання варіюється, див., наприклад, це питання: Авторитетна позиція дублікатів ключів HTTP GET запитів.ПРИМІТКА: Функція чутлива до регістру. Якщо ви віддаєте перевагу нечутливому до регістру імені параметра, додайте модифікатор 'i' до RegExp.
Це оновлення, засноване на нових URLSearchParams специфікаціях для досягнення того ж результату більш лаконічно. Дивіться відповідь під назвою "URLSearchParams" нижче.
Roshambo на snipplr.com має простий скрипт для досягнення цього, описаний в Get URL Parameters with jQuery | Improved. За допомогою його скрипта ви також легко зможете витягнути саме ті параметри, які вам потрібні.
Ось суть:
Потім просто отримайте ваші параметри з рядка запиту.
Отже, якщо URL/рядок запиту був
xyz.com/index.html?lang=de
.Просто викличте
var langval = $.urlParam('lang');
, і все готово.У UZBEKJON є чудова стаття про це в блозі, Отримання параметрів URL та їх значень за допомогою jQuery.
Якщо ви використовуєте jQuery, ви можете скористатися бібліотекою, наприклад, jQuery BBQ: Back Button & Query Library.
...jQuery BBQ надає повноцінний метод
.deparam()
разом з управлінням хеш-станом, а також методами розбору фрагментів / рядка запиту і злиття утиліт.Редагування: Додавання прикладу Deparam:
Якщо ви хочете просто використовувати звичайний JavaScript, ви можете використовувати...
Через новий HTML History API, а саме
history.pushState()
таhistory.replaceState()
, URL-адреса може змінитися, що призведе до недійсності кешу параметрів та їх значень.Ця версія буде оновлювати свій внутрішній кеш параметрів при кожній зміні історії.