Сегодня решил написать функцию на javascript, которая может получать GET параметры из урла. Иногда это бывает полезно: получение параметров без использования PHP.
Функция получает параметры и упаковывает в ассоциативный массив вида [«имя переменной»=>»значение», «имя переменной 2″=>»значение 2»].
Функция получилась не большая, но может быть полезная. Ниже приведен код функции с подробными комментариями:
function getUrlVar(){ var urlVar = window.location.search; // получаем параметры из урла var arrayVar = []; // массив для хранения переменных var valueAndKey = []; // массив для временного хранения значения и имени переменной var resultArray = []; // массив для хранения переменных arrayVar = (urlVar.substr(1)).split('&'); // разбираем урл на параметры if(arrayVar[0]=="") return false; // если нет переменных в урле for (i = 0; i < arrayVar.length; i ++) { // перебираем все переменные из урла valueAndKey = arrayVar[i].split('='); // пишем в массив имя переменной и ее значение resultArray[valueAndKey[0]] = valueAndKey[1]; // пишем в итоговый массив имя переменной и ее значение } return resultArray; // возвращаем результат }
И пример использования этой функции:
// вывод в консоль массива со всеми переменными console.log(getUrlVar()); // вывод сообщения со значением переменной "A" var result = getUrlVar(); alert(result['A']);
Спасибо
Спасибо, пригодилось.
Admin, у тебя код возвращает пустой массив. Ассоциативный массив есть объект, поэтому resultArray должен быть объявлен как пустой объект, а не массив. Если это исправить, все работает.
Вы серьезно?) такой большой код для такой простой вещи?))
function getUrlParams() {
var url = window.location.search.match(/\?(.+)/)[1].split('&');
var res = {};
url.forEach(function(entry){
res[entry.split('=')[0]] = entry.split('=')[1];
});
return res;
}
Эта короткая функция работает некорректно, если строка параметров пуста. Не рекомендую юзать, используйте исходный авторский вариант.
Автор, спасибо. Функция не корректно работает с параметрами передающими массив. Если URL: http://www.some.site/?var%5B%5D=1&var%5B%5D=2.