13 апреля 2016, 11:19
JavaScript: как получить get параметр
В javascript нет встроенных функций, которые позволяют получить значение определенного get параметра. Но мы можем написать свою функцию которая будет искать и возвращать значение нужного нам get параметра.
Функция для получения get:
Функция работает аналогично функции $_GET в PHP. Распознает массивы в гет параметрах.function $_GET(keys) { function getElement(arr, keys) { let key = keys.shift(); return keys.length ? getElement(arr[key], keys) : arr[key]; } function setElement(arr, keys, value) { let key = keys.shift(); if (keys.length) { arr[key] = {}; setElement(arr[key], keys, value) } else { if (!key) { key = 0; while (key in arr) { key++; } } arr[key] = value; } } let get = {}; window.location.search.slice(1).split('&').forEach(function(item) { let data = item.split('='); let key = data[0].replace(/\[.*/, ''); let value = data[1] ? data[1] : ''; if (data[0] !== key) { let subkeys = data[0].match(/(?<=\[).*?(?=\])/g); get[key] = get[key] ? get[key] : {}; setElement(get[key], subkeys, value); } else { get[key] = value; } }); if (keys) { return getElement(get, keys.constructor !== Array ? keys.split() : keys); } return get; }
Получение всеx get параметров в виде объекта:
$_GET()
Получение значения get параметра:
$_GET('param')
Получение значения get параметра массива, нужно указать вложенность в виде массива:
$_GET(['param', 'key'])
Простая функция для получения get:
Данная функция позволяет получить значение определенного get параметра точно по ключу, массивы не распознает.function $_GET(key) { var p = window.location.search; p = p.match(new RegExp(key + '=([^&=]+)')); return p ? p[1] : false; }
Например, ваш url из которого нужно получить get выглядит так:
http://frontblog.ru/index.php?page=1
Для того чтобы получить значение параметра
page
вставляете в свой скрипт $_GET('page')
и данная функция вернет вам 1
, что является значение параметра page
.Если параметра
page
не окажется на странице, то функция $_GET('page')
вернет false
.Функция для получения всех get параметров в виде массива:
Рассмотренная выше функция позволяет получить определенный параметр по ключу, но можно получить все параметры сразу и записать их в переменную и далее использовать их как душе угодно, массивы эта функция не распознает. Пример такой функции:var gets = (function() { var a = window.location.search; var b = new Object(); a = a.substring(1).split("&"); for (var i = 0; i < a.length; i++) { c = a[i].split("="); b[c[0]] = c[1]; } return b; })();
Данная функция получает все get параметры и записывает их в переменную
gets
. Для получения параметра page
нужно написать так gets['page']
. Плюс такого способа только в том, что функция выполнится один раз и у вас будут все параметры в виде ассоциативного массива.Например, для url
http://frontblog.ru/index.php?page=1&item=2
массив будет выглядеть так:var gets = { "page" : "1", "item" : "2" }
Ключами являются
page
и item
. По ним и происходит поиск нужного значения: gets['page']
вернет 1
, gets['item']
вернет 2
.Какой функцией воспользоваться решать вам. Также буду рад предложениям подобных функций в комментариях.
Вернуться назад
Сильно помогло!
var param = $_GET('param');