Разобрать URL в JavaScript - PullRequest
       55

Разобрать URL в JavaScript

76 голосов
/ 11 июля 2011

Как мне разобрать URL с помощью JavaScript (также с помощью jQuery)?

Например, у меня есть это в моей строке,

url = "http://example.com/form_image_edit.php?img_id=33"

Я хочу получить значение img_id

Я знаю, что могу легко сделать это с PHP с parse_url(), но я хочу знать, как это возможно с JavaScript.

Ответы [ 13 ]

119 голосов
/ 11 июля 2011

Вы можете использовать хитрость создания a -элемента, добавить к нему URL, а затем использовать его Объект Location .

function parseUrl( url ) {
    var a = document.createElement('a');
    a.href = url;
    return a;
}

parseUrl('http://example.com/form_image_edit.php?img_id=33').search

Который выдаст: ?img_id=33


Вы также можете использовать php.js , чтобы получить функцию parse_url в JavaScript .


Обновление (2012-07-05)

Я бы порекомендовал использовать превосходную библиотеку URI.js , если вам нужно сделать что-то большее, чем супер простая обработка URL.

35 голосов
/ 11 июля 2011

Если ваша строка называется s, тогда

var id = s.match(/img_id=([^&]+)/)[1]

даст вам.

10 голосов
/ 11 июля 2011

Попробуйте это:

var url = window.location;
var urlAux = url.split('=');
var img_id = urlAux[1]
6 голосов
/ 15 февраля 2013

Существующий хороший плагин jQuery Purl (парсер URL JavaScript) .Эту утилиту можно использовать двумя способами - с jQuery или без ...

5 голосов
/ 31 марта 2015

Один лайнер:

location.search.replace('?','').split('&').reduce(function(s,c){var t=c.split('=');s[t[0]]=t[1];return s;},{})
5 голосов
/ 11 июля 2011

получил от Google, попробуйте использовать этот метод

function getQuerystring2(key, default_) 
{ 
    if (default_==null) 
    { 
        default_=""; 
    } 
    var search = unescape(location.search); 
    if (search == "") 
    { 
        return default_; 
    } 
    search = search.substr(1); 
    var params = search.split("&"); 
    for (var i = 0; i < params.length; i++) 
    { 
        var pairs = params[i].split("="); 
        if(pairs[0] == key) 
        { 
            return pairs[1]; 
        } 
    } 


return default_; 
}
3 голосов
/ 05 января 2016

Это должно исправить несколько крайних случаев в ответе Кобе:

function getQueryParam(url, key) {
  var queryStartPos = url.indexOf('?');
  if (queryStartPos === -1) {
    return;
  }
  var params = url.substring(queryStartPos + 1).split('&');
  for (var i = 0; i < params.length; i++) {
    var pairs = params[i].split('=');
    if (decodeURIComponent(pairs.shift()) == key) {
      return decodeURIComponent(pairs.join('='));
    }
  }
}

getQueryParam('http://example.com/form_image_edit.php?img_id=33', 'img_id');
// outputs "33"
2 голосов
/ 09 марта 2014

Нечто подобное должно работать на вас.Даже если имеется несколько значений строки запроса, эта функция должна возвращать значение требуемого ключа.

function getQSValue(url) 
{
    key = 'img_id';
    query_string = url.split('?');
    string_values = query_string[1].split('&');
    for(i=0;  i < string_values.length; i++)
    {
        if( string_values[i].match(key))
            req_value = string_values[i].split('=');    
    }
    return req_value[1];
}
2 голосов
/ 02 апреля 2013

Я написал библиотеку JavaScript для разбора URL, URL.js , вы можете использовать ее для этого.

Пример:

url.parse("http://mysite.com/form_image_edit.php?img_id=33").get.img_id === "33"
1 голос
/ 26 октября 2017
var url = window.location;
var urlAux = url.split('=');
var img_id = urlAux[1]

Работал на меня.Но первая переменная должна быть var url = window.location.href

...