Передача данных методом GET на языке Javascript
К сожалению, на javascript нет готовой функции, позволяющей получать данные методом GET. Но такая функция действительно очень даже нужная. Поэтому я ее напишу. Итак, постановка задачи: написать функцию get('var'), которая возвращала бы значение переменной 'var', передаваемое методом get:
function get(n){
/* 1 ) содержание нашей адресной строки можно получить через свойство location обьекта window . Содержание адресной строки обычно имеет вид: http://site.ru/doc.html?var1=value1&var2=value2&var3=value3... */
adres=window.location.toString();
/* 2) Ищем в переменной adres знак "?" и вырезаем все, что после него. */
var=adres.substring(adres.indexOf("?")+1); // это и есть значения наших переменных. (var1=value1&var2=value2&var3=value3... )
/* 3) Ищем интересующую нас переменную */
pos=var.indexOf("&"+n+"="); // запоминаем сколько знаков от начала строки до знака & , после которого название нашей переменной.
/* 4) И, наконец, вырезаем нужное значение */
val=var.substring(pos+n.length+2); // длина названия переменной + 2 символа ( & и = ). После этого обрезания остается (value2&var3=value3... )
return val.substring(0,val.indexOf("&")); // Возвращаем полученое значение. Т.е. функция вернет значение до следующего знака &.
}
Вот почти и все. Осталось исправить логические ошибки:
- В пункте 2. приведем нашу строку к более универсальному виду (вместо var1=value1&var2=value2&var3=value3... сделаем &var1=value1&var2=value2&var3=value3... ) var="&"+var;
- В 4-м пункте добавим условие, на случай, если мы не найдем нашу переменную . if(pos==-1) return false;
- А также в 4-м пункте во второй строчке, если мы не найдем знак & мы не будем обрезать дальше нашу строку.
return val.indexOf("&")>=0?val.substring(0,a.indexOf("&")):val;
Итого, сложив все вместе и проведя минимизацию, получаем следующее:
a=window.location.toString();
a="&"+a.substring(a.indexOf("?")+1);
p=a.indexOf("&"+n+"=");
a=p==-1?'':a.substring(p+n.length+2);
return a.indexOf("&")>=0?a.substring(0,a.indexOf("&")):a;
}
Готово! Пользуйтесь на здоровье.
При печати статьи на другом сайте, не забывайте указывать первоисточник.
Если есть вопросы или замечания - пишите об этом в письме