Разбить URL на его компоненты - PullRequest
12 голосов
/ 03 июля 2011

Я использую javascript и хотел бы взять имеющуюся у меня строку URL и разбить ее на такие компоненты, как аргументы host, path и query.

Мне нужно сделать это, чтобы получить один из аргументов запроса, который сам является URL-адресом и, таким образом, закодирован в исходной строке URL-адреса.

Мне кажется, что в Javascript должен быть простой способ сделать это. Возможно, что-то похожее на это:

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

Ответы [ 4 ]

15 голосов
/ 03 июля 2011

Функция parseUri сделает все, что вам нужно

Редактировать В качестве альтернативы вы можете получить DOM для выполнения тяжелой работы за вас иполучить доступ к свойствам только что созданного объекта a для различных частей URL.

3 голосов
/ 01 сентября 2014
<script type="text/javascript" language="javascript">
newURL = window.location.protocol + "//" + window.location.host + "/" + window.location.pathname;
</script>

Hope this will help..
2 голосов
/ 03 июля 2011

В javascript вы можете сделать это, используя split () для параметров и используя объект местоположения для протокола и домена - как предложил Карл

Также вы можете использовать parseUri, как предложил Так

Существует также плагин jQuery, который облегчает анализ, если вы уже используете jQuery в своем проекте: https://github.com/allmarkedup/jQuery-URL-Parser#readme

Пример:

$.url('http://allmarkedup.com?sky=blue&grass=green').param('sky'); // returns 'blue'
1 голос
/ 03 июля 2011

Вероятно, не самый лучший способ сделать это, но простой способ получить строку запроса в JavaScript - это просто использовать что-то вроде:

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

Затем можно разделить запрос на основена & и снова на =, чтобы получить любой параметр, который вам нужен.

Извините, если это не очень полезно, поскольку это немного низкотехнологичный метод: P

РЕДАКТИРОВАТЬ: Простонаписал небольшой небольшой объект JavaScript, чтобы получить параметры URL-запроса для вас (вроде как) в вашем примере.Только проверено это в хроме, но в теории это должно работать:)

//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'));
...