вторник, 28 мая 2013 г.

javascript и get запрос

Парсер GET запросов на javascript

Проблема

Иногда возникает необходимость работать с GET запросами с помощью javascript. Очень удобно это делать предварительно разобрав запрос на пары [параметр]=>'значение' и записав их в массив. Так же необходимо учитывать, что кириллические символы, отправленные через GET запросы необходимо декодировать.

Решение с помощью функции parseGET()

Алгоритм работы

  1. Для удобства записываем GET запрос в переменную строчного типа;
  2. Создаем переменную типа массив, для хранения результатов работы нашей функции;
  3. Создаем функцию, которую назовем  parseGET;
  4. Убираем из строки запроса символ '?';
  5. Создаем вспомогательный массив вида [номер элемента]=>'параметр=значение';
  6. В цикле перебираем все элементы массива;
  7. Для каждого элемента выполняем следующие действия: создаем еще один вспомогательный массив типа [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['параметр']);

Комментариев нет:

Отправить комментарий