просто о сложном


Разбор GET запросов на JavaScript

tags: ajax, javascript
GET запросы (запросы через адресную строку) можно легко разбирать при помощи JavaScript. Продемонстрирую это на следующем примере: напишите в адресной строке любые параметры в формате ?key=val&key2=val2

переменные GET запроса:
var param = new Array();
var get = location.search;					// строка GET запроса

if (get != '') {
	var tmp = get.substr(1).split('&');		// парсим переменные
	var tmp2;								// вспомагательная
	for (var i in tmp) {
		tmp2 = tmp[i].split('=');			// разделяем ключ значение
		param[tmp2[0]] = tmp2[1];
	}
}

// вывод на экран
var div = document.getElementById('greq');
for (var key in param) {
	div.innerHTML += "<br>"+key+" = "+param[key];
}

Быть добру!
posted on april 05, 2009, updated on september 25, 2025

Комментарии

А вот как теперь кракозябры
%EF%E0%F0%E0%EC%E5%F2%F0 = %E7%ED%E0%F7%E5%ED%E8%E5
в нормальный текст превратить?

gorniy 22.05.2009 23:11 #

м.б. так: s = decodeURIComponent(s);

mvn_2000 13.08.2009 07:39 #

Так называемые "кракозябры" это Unicode-кодированные символы кириллицы. Преобразовать обратно в кириллические символы их можно с помощью встроенной функции - unescape().

fear_Y2k 14.01.2012 14:19 #

а как сделать что бы тот же GET брался не из адресной строки а из подключения скрипта, т.е
<script type="text/javascript" src="скрипт.js?id=17&id=17"></script>

Алексей 12.10.2012 11:58 #

to Алексей: С помощью jQuery например так
var get = $('script[src*="скрипт.js"]').attr('src').replace(/[^\?]+\?/, '');
и далее по коду

Alek Veritov 12.10.2012 12:44 #

Огроменное спасибо. чуть поковырял - все работает

Алексей 12.10.2012 13:03 #

Просто, лаконично, Работает!
ps: по рекламе нажал)

потерянный 24.01.2013 11:41 #

в случае если есть только ключ и нет значения, значение будет undefined

заменить строчку:
param[tmp2[0]] = tmp2[1];
на:
param[tmp2[0]] = (typeof tmp2[1] == 'undefined')?'':tmp2[1];

Георгий 13.10.2013 12:27 #

По поводу кракозябр: unescape() у меня почему-то неверно отработал, зато decodeURI() перевел все правильно!

anonymous 18.06.2014 09:24 #

Спасибо за статью, очень помогла

Александр Аваков 17.02.2015 12:17 #
Отправка новых комментариев временно отключена. Извините, работаем над этим.


tags cloud