2011-02-10 1 views
7

Ho una serie di parametri passati a una pagina da variabili URL. L'URL sembra un po 'come:?Ottieni le variabili dell'array URL in javascript/jquery

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

Utilizzando l'estensione jQuery getUrlParam posso ottenere variabili URL molto facilmente, ma piuttosto che restituire una categoria come array (che è quello che voglio) viene restituito come null.

C'è un modo per me di leggere questi in un array di javascript?

risposta

1

non dovrebbe essere: file.aspx?category=1&category=7&category=3

+0

Sì sì, con getUrlParam restituisce un array in base alle esigenze. – Hibiscus

+0

hmm.,. perché l'hai quindi scelto come risposta corretta? – arnorhs

+0

Perché, come ha appena detto ... "in realtà sì, [il mio suggerimento]" fa ciò di cui ha bisogno. –

3

ho già segnalato a questa domanda: Get QueryString values with jQuery - ma come @Crescent Fresco ha sottolineato, tali esempi non trattano con gli array nella stringa di query (e oltre, sono un po 'lento Penso

. così ho cucinato la mia versione di questa funzione:

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; 
} 

Ma ci sono avvertimenti esso funziona solo su una stringa di query formata correttamente - non c'è il rilevamento degli errori Inoltre, non funziona su numerata array/indicizzati... . Quello è quando la matrice è definita nella stringa di query come:

Sarebbe banale aggiungere alla query .search() una regex per averlo trovato, ma io non sono il migliore esperto di espressioni regolari ... qualcuno ha delle idee?

+1

Non una singola risposta ci farà ciò il PO chiede (cioè rilevamento matrice nella stringa di query). –

+0

Hai ragione. Non me ne sono reso conto - ho appena visto una funzione complicata e ho pensato che una cosa così complicata dovesse farlo bene ... ma non è stato così. Ho aggiunto la mia versione. – arnorhs

+0

perché non pubblicarlo semplicemente anziché ottenere? – kjy112