2013-04-07 13 views
10

Ho un modulo che utilizza il metodo GET e contiene un array:Get querystring valori di array in Javascript

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

Sto cercando di recuperare i valori di matrice 'ciao' e 'mondo' utilizzando JavaScript o jQuery.

Ho dato un'occhiata a soluzioni simili su Overflow di stack (ad esempio How can I get query string values in JavaScript?) ma sembrano gestire solo i parametri piuttosto che gli array.

È possibile ottenere valori di array?

+1

La risposta http://stackoverflow.com/a/3855394/295783 nel link che hai postato funziona nel vostro caso, a meno che i parms ripetono come suggerito da voi menzionando array e l'uso di [] – mplungjan

+1

Giusto per essere chiari: l'URL non ha i concetti di * array *. Tutto quello che hai sono più parametri con lo stesso nome. I '[]' sono in genere usati per i server PHP, che quindi creeranno array di questi parametri. Altri linguaggi (ad esempio Python) possono gestire più parametri con lo stesso nome (e senza '[]') bene. –

+2

Dalla domanda a cui sei collegato, potresti trovare utile questa risposta: http://stackoverflow.com/a/9362596/218196. –

risposta

11

Ci si va: 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

Grazie mille, Adidi. È perfetto! :) – iltdev

+0

Siete i benvenuti ^^ – Adidi

+0

Dopo un sacco di difficoltà, ho capito che dobbiamo aggiungere [] per nominare se si tratta di un array! sembra ovvio ora, ma in qualche modo ho perso un'ora per notarlo. –

Problemi correlati