Разбор GET запроса средствами JavaScript

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

переменные GET запроса:
var tmp = new Array();		// два вспомагательных
var tmp2 = new Array();		// массива
var param = new Array();

var get = location.search;	// строка GET запроса
if(get != '') {
	tmp = (get.substr(1)).split('&');	// разделяем переменные
	for(var i=0; i < tmp.length; i++) { tmp2 = tmp[i].split('='); // массив param будет содержать param[tmp2[0]] = tmp2[1]; // пары ключ(имя переменной)->значение
	}
	var obj = document.getElementById('greq');	// вывод на экран
	for (var key in param) {
		obj.innerHTML += key+" = "+param[key]+"";
	}
}

Ключевым значением является location.search (см. статью про tag base).

 

Оцените статью
Добавить комментарий

  1. gorniy

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

  2. mvn_2000

    м.б. так: <html><body> <script>function q (s) { s = decodeURIComponent(s); alert(s); }</script> <a href="javascript:q('%EF%E0%F0%E0%EC%E5%F2%F0 = %E7%ED%E0%F7%E5%ED%E8%E5');">test</a> </body></html>

  3. Kris

    у меня не пашет…

  4. fear_Y2k

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

  5. Алексей

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

  6. Alek Veritov

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

  7. Алексей

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

  8. потерянный

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

  9. Георгий

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

  10. anonymous

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

  11. Николай

    <html> <head> <title></title> <style> #content { width: 70%; height: 410px; border: 1px solid grey; border-radius: 7px; padding: 20px; display: block; float: right; } #menu { width: 20%; height: 415px; padding: 25px; padding-top: 10px; display: block; float: left; border: 1px solid grey; border-radius: 7px; } p + p { text-align: center; } </style> <script type="text/javascript"> var tmp = new Array(); var tmp2 = new Array(); var param = new Array(); var get = location.search; if(get != '') { tmp = (get.substr(1)).split('&'); for(var i=0; i < tmp.length; i++) { tmp2 = tmp[i].split('='); param[tmp2[0]] = tmp2[1]; } var obj = document.getElementById('greq'); for (var key in param) { obj.innerHTML += key+" = "+param[key]+"<br>"; } }

  12. Николай

    </script> </head> <body> <div id="menu"> <form action="index.php" name="Send"> <p><input type="text" name="Name" maxlength="20" style="width: 200px;" value="Имя"></p> <p><textarea name="Mail" style="height: 70px; width: 200px; max-width: 200px; max-height: 300px;">Сообщение</textarea></p> <p><input type="submit"></p> </form> </div> <div id="content"> <p>Вывод сообщения</p> </div> </body> </html>

  13. Николай

    Подскажите, в чем ошибка…

  14. Александр Аваков

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