Для определения GET-параметров на JavaScript, необходимо произвести синтаксический разбор URL текущей страницы.
Строку с GET-параметрами можно определить так: window.location.search. Свойство search объекта location хранит часть URL, начиная с «?» до начала хеш-данных.
Пример:
Допустим, у нас есть следующий адрес:
http://web.izjum.com/some-page.html?var1=111&var2&var3=ttt#someHashData,
тогда window.location.search вернёт нам:
?var1=111&var2&var3=ttt
Таким образом, мы можем легко получить все GET-переменные и их значения.
Следующая функция реализует эту задачу:
function parseGetParams() {
var $_GET = {};
var __GET = window.location.search.substring(1).split("&");
for(var i=0; i<__GET.length; i++) {
var getVar = __GET[i].split("=");
$_GET[getVar[0]] = typeof(getVar[1])=="undefined" ? "" : getVar[1];
}
return $_GET;
}
Если применить нашу функцию к указанному выше примеру URL, мы получим такой результат:
var GETArr = parseGetParams();
/*
GETArr = {
var1: "111",
var2: "",
var3: "ttt"
}
*/
массив пустой в коде ошибка
Только что перепроверил, все работает хорошо.
Может проблема в том, что функция возвращает объект, а не массив, а Вы ожидаете именно массив?
window.location.search = «?A[]=1&A[]=2&B[1]=3&C[0][data]=32»;
Очень кратко и лаконично.
Спасибо за скрипт!
how2use: GETArr[‘param’]
Спасибо за скрипт.
Все прекрасно работает.
Спасибо огромное!
Благодарствую за короткий рабочий скрипт.
Например для адреса:
index.php#&gid=1&pid=3
Не работает!
@Kolya, ну, на самом деле это не GET-параметры, а HASH.
Но даже в этом случае если вы ожидаете HASH именно в таком виде, вы можете модернизировать эту функцию заменив `window.location.search` на `window.location.hash`.