2011-07-03 16 views
10

Używam javascript i chcę pobrać ciąg URL, który mam i rozbić go na jego składniki, takie jak host, ścieżka i argumenty zapytania.Przerwij adres URL na jego składniki

Muszę to zrobić, aby uzyskać jeden z argumentów zapytania, który sam jest adresem URL i dlatego jest zakodowany w oryginalnym ciągu URL.

Mam wrażenie, że powinien istnieć prosty sposób na to w JavaScript. Może coś, co wygląda tak:

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

Odpowiedz

14

Funkcja parseUri zrobi wszystko co potrzeba

Edit Alternatywnie można get the DOM to do the hard work dla ciebie i dostępu właściwości na nowo utworzonej a obiektu dla różnych częściach URL.

+0

działa rozwiązanie Dom na argumentach zapytania czy też tylko dostać wystarczająco precyzyjny, aby zwrócić cały ciąg kwerendy bez rozbijania go do konkretnych, par klucz-wartość i dekoduje je? –

+0

Rozwiązanie DOM zwróci tylko cały ciąg zapytania. Można "podzielić()' na "i" następnie przepuścić przez te wyniki i 'split()' na "=", co da ci parę klucz/val. Sprawdź klucz pod kątem tego, którego szukasz, wyrwij się z pętli i zwróć wartość. – Tak

+0

Parseuri działało bardzo dobrze –

1
nie

Prawdopodobnie największym sposób to zrobić, ale jest prosty sposób, aby uzyskać ciąg kwerendy w JavaScript byłoby po prostu użyć coś wzdłuż linii:

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

Następnie można podzielić w górę kwerendę opartą na & i ponownie na =, aby uzyskać wszystko, czego potrzebujesz.

Przepraszam, jeśli to nie jest bardzo pomocny jak jego nieco niskiej metody tech: P

EDIT: prostu napisał krótki mały obiekt JavaScript, aby uzyskać parametry URL zapytania dla Ciebie (coś podobnego) w twój przykład. Tylko przetestowane w Chrome, ale teoretycznie powinno działać :)

//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

W JavaScript można to zrobić za pomocą split() do params i użyciu obiektu pozycja dla protokołu i domeny - jak Carl zaproponował

również można użyć parseUri tak jak sugeruje

Istnieje również jQuery plugin, który umożliwia analizowanie łatwiejsze, jeśli jesteś już przy użyciu jQuery w projekcie: https://github.com/allmarkedup/jQuery-URL-Parser#readme

Przykład:

$.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..