2013-04-07 18 views
10

Mam formularz, który używa metody GET i zawiera tablicę:Get kwerendy wartości tablicy w JavaScript

http://www.example.com?name[]=hello&name[]=world

Próbuję pobrać wartości array 'Hello' i 'świat' przy użyciu JavaScript lub jQuery.

Przeglądam podobne rozwiązania w przepełnieniu stosu (np. How can I get query string values in JavaScript?), ale wydaje się, że dotyczą one raczej parametrów niż tablic.

Czy można uzyskać wartości tablic?

+1

http://stackoverflow.com/a/3855394/295783 odpowiedź w linku pisał zadziała w twoim przypadku też, chyba że param powtórzyć sugerowane przez Ciebie wymieniając tablicę i użycie [] – mplungjan

+1

Wystarczy, aby było jasne: adres URL nie ma koncepcji * tablic *. Wszystko, co masz, to wiele parametrów o tej samej nazwie. '[]' Są zwykle używane dla serwerów PHP, które następnie stworzą tablice poza tymi parametrami. Inne języki (np. Python) mogą obsługiwać wiele parametrów o tej samej nazwie (bez '[]'). –

+2

Od pytania, które łączyłeś, ta odpowiedź może być pomocna: http://stackoverflow.com/a/9362596/218196. –

Odpowiedz

11

Nie idziesz: http://jsfiddle.net/mm6Bt/1/

function getURLParam(key,target){ 
    var values = []; 
    if (!target) target = location.href; 

    key = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); 

    var pattern = key + '=([^&#]+)'; 
    var o_reg = new RegExp(pattern,'ig'); 
    while (true){ 
     var matches = o_reg.exec(target); 
     if (matches && matches[1]){ 
      values.push(matches[1]); 
     } else { 
      break; 
     } 
    } 

    if (!values.length){ 
     return null; 
    } else { 
     return values.length == 1 ? values[0] : values; 
    } 
} 

var str = 'http://www.example.com?name[]=hello&name[]=world&var1=stam'; 

console.log(getURLParam('name[]',str)); 
console.log(getURLParam('var1',str)); 
+0

Wielkie dzięki, Adidi. To jest perfekcyjne! :) – iltdev

+0

Jesteś bardzo mile widziany ^^ – Adidi

+0

Po wielu zmaganiach zorientowałem się, że musimy dodać [], aby wymienić, jeśli jest to tablica! Teraz wygląda na oczywisty, ale jakoś zmarnowałem godzinę, żeby to zauważyć. –

Powiązane problemy