JavaScript: как получить GET-параметры из адресной строки

2011-04-26

Для определения GET-параметров на JavaScript, необходимо произвести синтаксический разбор URL текущей страницы.

Строку с GET-параметрами можно определить так: window.location.search. Свойство search объекта location хранит часть URL, начиная с «?» до начала хеш-данных.

Пример:
Допустим, у нас есть следующий адрес:
http://web.izjum.com/some-page.html?var1=111&var2&var3=ttt#someHashData,
тогда window.location.search вернёт нам:
?var1=111&var2&var3=ttt

Таким образом, мы можем легко получить все GET-переменные и их значения.
Следующая функция реализует эту задачу:

function parseGetParams() {
var $_GET = {};
var __GET = window.location.search.substring(1).split("&");
for(var i=0; i<__GET.length; i++) { var getVar = __GET[i].split("="); $_GET[getVar[0]] = typeof(getVar[1])=="undefined" ? "" : getVar[1]; } return $_GET; }

Если применить нашу функцию к указанному выше примеру URL, мы получим такой результат:

var GETArr = parseGetParams();
/*
GETArr = {
var1: "111",
var2: "",
var3: "ttt"
}
*/



10 комментариев на «JavaScript: как получить GET-параметры из адресной строки»

  1. кто то:

    массив пустой в коде ошибка

  2. admin:

    Только что перепроверил, все работает хорошо.
    Может проблема в том, что функция возвращает объект, а не массив, а Вы ожидаете именно массив?

  3. Jack Taylor:

    window.location.search = «?A[]=1&A[]=2&B[1]=3&C[0][data]=32»;

  4. Vee Jay:

    Очень кратко и лаконично.
    Спасибо за скрипт!

  5. Вася:

    how2use: GETArr[‘param’]

  6. Александ_Sam:

    Спасибо за скрипт.
    Все прекрасно работает.

  7. Vitalii:

    Спасибо огромное!

  8. Aleks:

    Благодарствую за короткий рабочий скрипт.

  9. Kolya:

    Например для адреса:
    index.php#&gid=1&pid=3

    Не работает!

  10. admin:

    @Kolya, ну, на самом деле это не GET-параметры, а HASH.
    Но даже в этом случае если вы ожидаете HASH именно в таком виде, вы можете модернизировать эту функцию заменив `window.location.search` на `window.location.hash`.

Добавить комментарий