2011-07-03 11 views
10

Sto usando javascript e vorrei prendere una stringa URL che ho e scomporla nei suoi componenti come l'host, il percorso e gli argomenti della query.Interrompe un URL nei suoi componenti

Ho bisogno di fare questo per arrivare ad uno degli argomenti della query, che è esso stesso un URL ed è quindi codificato nella stringa URL originale.

Mi sento come se ci fosse un modo semplice per farlo in Javascript. Forse qualcosa che assomiglia a questo:

var what_I_Want = url("http://www.domain.com?queryArg1=somequeryargument").getQueryArgumentValue("queryArg1"); 

risposta

14

La funzione parseUri farà tutto il necessario

Modifica In alternativa è possibile get the DOM to do the hard work per voi e di accesso immobili in un a oggetto appena creato per le diverse parti del URL.

+0

funziona la soluzione di DOM per gli argomenti di query o lo fa solo ottenere abbastanza specifico per restituire l'intera stringa di query senza romperlo nelle specifiche, le coppie chiave-valore e decodifica di loro? –

+0

La soluzione DOM restituirà solo l'intera stringa di query. Potresti 'split()' su "&", quindi esegui il ciclo di quei risultati e 'split()' su "=" che ti darà una coppia chiave/val. Prova la chiave contro quella che stai cercando, rompere il loop e restituire la val. – Tak

+0

Gli parseuri hanno funzionato molto bene –

1
non

Probabilmente il modo migliore di farlo, ma un metodo semplice per ottenere la stringa di query in JavaScript sarebbe utilizzare solo qualcosa sulla falsariga di:

a = "http://www.domain.com?queryArg1=somequeryargument"; 
query = a.substring(a.indexOf('?')+1); 

È quindi possibile suddividere la query in base a il & e ancora sul = per ottenere qualsiasi parametro di cui hai bisogno.

Scusate se questo non è molto utile perché è un po 'di un metodo low tech: P

EDIT: appena scritto un piccolo oggetto rapido Javascript per ottenere i parametri di ricerca URL per voi (un po' come) in il tuo esempio. Solo testato in cromo ma in teoria dovrebbe funzionare :)

//Quick and dirty query Getter object. 
function urlQueryGetter(url){ 
    //array to store params 
    var qParam = new Array(); 
    //function to get param 
    this.getParam = function(x){ 
    return qParam[x]; 
    } 

    //parse url 
    query = url.substring(url.indexOf('?')+1); 
    query_items = query.split('&'); 
    for(i=0; i<query_items.length;i++){ 
     s = query_items[i].split('='); 
     qParam[s[0]] = s[1]; 
    } 

} 

//Useage 
var bla = new urlQueryGetter("http://www.domain.com?queryArg1=somequeryargument&test=cheese"); 
alert(bla.getParam('test')); 
1

in JavaScript è possibile farlo utilizzando split() per i params e utilizzando l'oggetto posizione per il protocollo e il dominio - come Carl suggerito

inoltre è possibile utilizzare parseUri come Tak suggerito

C'è anche un plugin jQuery che rende l'analisi più facile se si sta già utilizzando jQuery nel progetto: https://github.com/allmarkedup/jQuery-URL-Parser#readme

Esempio:

$.url('http://allmarkedup.com?sky=blue&grass=green').param('sky'); // returns 'blue' 
2
<script type="text/javascript" language="javascript"> 
newURL = window.location.protocol + "//" + window.location.host + "/" + window.location.pathname; 
</script> 

Hope this will help.. 
Problemi correlati