Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GET переменные из адресной строки, Как вытащить? 
:(
    Опции темы
arbuzzz
Дата 14.10.2007, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 7.8.2007

Репутация: нет
Всего: нет



Подскажите, как вытащить из адресной строки браузера переменные, которые получены через GET?
То есть, например, из строки 
Код

http://localhost/polfarm/url_test.html?val1=sample1&val2=sample2

вытащить переменные val1 и val2 для дальнеёшего использования их в скрипте?
Знаю, что вытаскивается регулярками, но вот не дружу я сними.
PM MAIL   Вверх
xamloru
Дата 14.10.2007, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 2.8.2007

Репутация: нет
Всего: нет



Код

function getvars(){
  var get_str=document.location.href;
  var i=get_str.indexOf('?');
  if(i==-1){
    return false;
  }else{
    get_str=get_str.substr(i+1);
    var vals=get_str.split('&');
    var n=vals.length;
    for(i=0;i<n;i++){
      vals[i]=vals[i].split('=');
    }
    return vals;
  }
}

никаких регекспов не используется.
функция вернет массив типа:
Array(Array('val1','sample1'),Array('val2','sample2'))
PM MAIL   Вверх
SelenIT
Дата 14.10.2007, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



А зачем искать "вопросик" в location.href, если есть готовый location.search? smile
И возвращать, имхо, лучше хеш, а не двумерный массив. Например, так (а-ля PHP;):
Код

var _GET = (function() {
    var pairs = window.location.search.substr(1).split('&'), get = {};
    for (var i=0; pairs[i]; i++) {
        var pair = pairs[i].split('=');
        get[pair[0]] = unescape(pair[1] || '');
    }
    return get;
})();

// пусть GET-строка имеет вид ...?a=long%20phrase&b=12345&rest
alert ('a="'+_GET['a']+'",\nb="'+_GET['b']+'",\nrest="'+_GET['rest']+'"');


UPD: еще более PHP-образный вариант функции, преобразует переменные вида a[]=xxx&a[]=yyy в хеши, подобные PHP-шным массивам. Если индексы в скобках есть, они используются, если нет - генерируются номера. Понадобилась одна регулярка:
Код

function() {
   var pairs = window.location.search.substr(1).split('&'), get = {}, m;
   for (var i=0; pairs[i]; i++) {
      var pair = pairs[i].split('=');
      if (m = pair[0].match(/(.+?)\[(.*)\]/)) {
          if (!get[m[1]]) {
              get[m[1]] = {};
              get[m[1]].length = 0;
          }
          get[m[1]][(m[2] || get[m[1]].length++)] = unescape(pair[1] || '');
      }
      else get[pair[0]] = unescape(pair[1] || '');
   }
   return get;
}


Это сообщение отредактировал(а) SelenIT - 14.10.2007, 20:23


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0451 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.