2010-12-28 21 views
15

Przepraszamy za kolejne "proste" pytanie, ale istnieje łatwy sposób na odczyt zmiennych GET z adresu URL. przykład. Mam adres URL: http://www.domain.com/page.php?var1=1 W moim przypadku będę mieć tylko jedną zmienną, tj. var1 lub var2 (zmienna może się zmienić, ale będzie tylko jedna na jeden adres URL). Wszystkie widziane przeze mnie blaszki odnoszą się raczej do tablic niż do "singletonów" OK Wiem, że rozwiązanie macierzowe może być lepsze, ale jest to po prostu prosta pojedyncza zmienna pobierania. Jakieś sugestie? Dzięki z góryodczytaj zmienne GET w adresie URL JQuery

+3

możliwe duplikat [Get kwerendy wartości z jQuery] (http://stackoverflow.com/questions/901115/get-querystring-values-with-jquery) – Oded

+0

@Oded> Nie wystarczy jQuery: P – naveen

Odpowiedz

39
var split = location.search.replace('?', '').split('=') 

split[0] to nazwa var i split[1] to wartość var. Faktycznie naprawdę nie potrzeba jQuery do tego kawałka kodu;)

chodzi o komentarzu twiz, w dzielenie wielu zmiennych można zrobić tak:

var split = location.search.replace('?', '').split('&').map(function(val){ 
    return val.split('='); 
}); 

Można uzyskać dostęp do nazwy zmiennej przez split[index][0] i wartości przez split[index][1].

Oczywiście można użyć drugiego fragmentu zamiast pierwszego również dla jednej zmiennej.

+0

idealny dzięki - przyjmie za 4 minuty (cant'before!) –

+3

Czy nie musiałbyś dzielić się znakami "&" również dla wielu zmiennych? – twiz

+0

@twiz zaktualizował odpowiedź – usoban

3

Używam tego w moim domyślnym pliku javascript.

var get = []; 
location.search.replace('?', '').split('&').forEach(function (val) { 
    split = val.split("=", 2); 
    get[split[0]] = split[1]; 
}); 

Teraz możesz wykorzystać je według nazwy:

get["var1"] 
0

Można użyć tej funkcji, która zwraca wartość z podanej nazwie var var url jeśli istnieje. W przeciwnym razie otrzymasz pusty ciąg znaków.

function getUrlValue(varName) { 
    var split = $(location).attr('href').split('?'); 
    var value = ''; 
    if (split.length == 2) { 
     split = split[1].split('&'); 
     for (var i = 0; i < split.length; i+=1) { 
      var keyValue = split[i].split('='); 
      if (keyValue.length == 2 && keyValue[0] == varName) { 
       value = keyValue[1]; 
       break; 
      } 
     } 
    } 
    return value; 
}