Парсер GET запросов на javascript
Проблема
Иногда возникает необходимость работать с GET запросами с помощью javascript. Очень удобно это делать предварительно разобрав запрос на пары [параметр]=>'значение' и записав их в массив. Так же необходимо учитывать, что кириллические символы, отправленные через GET запросы необходимо декодировать.
Решение с помощью функции parseGET()
Алгоритм работы
- Для удобства записываем GET запрос в переменную строчного типа;
- Создаем переменную типа массив, для хранения результатов работы нашей функции;
- Создаем функцию, которую назовем parseGET;
- Убираем из строки запроса символ '?';
- Создаем вспомогательный массив вида [номер элемента]=>'параметр=значение';
- В цикле перебираем все элементы массива;
- Для каждого элемента выполняем следующие действия: создаем еще один вспомогательный массив типа [0]=>'название параметра', [1]=>'значение параметра', декодируем значение параметра и заполняем массив, который мы создали в шаге 2.
Функция parseGET()
//Для удобства записываем GET запрос в переменную строчного типа
var GET_query = document.location.search;
//Создаем переменную типа массив, для хранения результатов работы нашей функции
var GET=new Array();
//Создаем функцию, которую назовем parseGET
function parseGET(){
//Убираем из строки запроса символ '?'
GET_query=GET_query.substr(1);
//Создаем вспомогательный массив вида [номер элемента]=>'параметр=значение'
var preGET=GET_query.split('&');
//В цикле перебираем все элементы массива
for(var i=0; i<preGET.length; i++){
//Для каждого элемента выполняем следующие действия:
//создаем еще один вспомогательный массив типа [0]=>'название параметра', [1]=>'значение параметра'
var TMP_arr=preGET[i].split('=');
var key=TMP_arr[0];
//декодируем значение параметра
var value=decodeURIComponent(TMP_arr[1]);
//заполняем массив, который мы создали в шаге 2
GET[key]=value;
}
}
//вызываем функцию
parseGET(GET_query);
Итоги
Теперь к любому параметру отправленному на страницу с помощью GET запроса можно обратиться в javascript коде например так:
alert(GET['параметр']);
Комментариев нет:
Отправить комментарий