2011-02-10 6 views
7

Mam kilka parametrów przekazywanych do strony przez zmienne URL. URL wygląda na coś w rodzaju:Uzyskaj zmienne tablic adresów URL w javascript/jquery

file.aspx kategorii [] = 1 & kategorii [] = 7 & kategorii [] = 3 & id = 8AZ

poprzez rozszerzenie jQuery getUrlParam mogę zmiennych URL bardzo łatwo, ale zamiast zwracać kategorię jako tablicę (co jest tym, czego chcę), zwraca ona wartość null.

Czy istnieje sposób dla mnie, aby je przeczytać w tablicy javascript?

Odpowiedz

1

Nie powinno to być: file.aspx?category=1&category=7&category=3

+0

Tak, tak, z getUrlParam, który zwraca tablicę, jak potrzebowałem. – Hibiscus

+0

hmm.,. dlaczego wybrałeś go jako poprawną odpowiedź? – arnorhs

+0

Ponieważ, jak właśnie powiedział ... "Tak, tak, [moja sugestia]" robi to, czego potrzebował. –

3

ja wcześniej wskazał na to pytanie: Get QueryString values with jQuery - ale jak @Crescent Fresh wskazał, te przykłady nie radzić sobie z tablicami w ciągu kwerendy (a poza tym są one nieco powolny myślę

. więc gotowane moją wersję tej funkcji:

function getQueryString() { 
    var ret = {}; 
    var parts = (document.location.toString().split('?')[1]).split('&'); 
    for (var i = 0; i < parts.length; i++) { 

     var p = parts[i].split('='); 
     // so strings will be correctly parsed: 
     p[1] = decodeURIComponent(p[1].replace(/\+/g, " ")); 

     if (p[0].search(/\[\]/) >= 0) { // then it's an array 
      p[0] = p[0].replace('[]',''); 

      if (typeof ret[p[0]] != 'object') ret[p[0]] = []; 
      ret[p[0]].push(p[1]); 
     } else { 
      ret[p[0]] = p[1]; 
     } 
    } 
    return ret; 
} 

Ale istnieją zastrzeżenia będzie działać tylko na poprawnie utworzonego łańcucha zapytania - nie ma wykrywania błędów także, to nie działa na numerowane/tablic indeksowanych... to jest, gdy twoja tablica jest zdefiniowana w ciągu zapytania jako:

?category[3]=1&category[4]=7&category[20]=3&id=8az 

Byłoby trywialnie dodać do zapytania .search() regex dla znalezienia tego również, ale nie jestem najlepszym ekspertem od regex ... ktokolwiek ma pomysły?

+1

Żadna odpowiedź nie będzie robić to, co OP prosi (tj wykrywania tablicy w ciągu kwerendy). –

+0

Masz rację. Nie zdawałem sobie sprawy - po prostu zobaczyłem skomplikowaną funkcję i pomyślałem, że coś, co jest skomplikowane, musi to zrobić dobrze ... ale tak się nie stało. Dodałem moją wersję. – arnorhs

+0

dlaczego po prostu nie publikuj zamiast dostać? – kjy112